summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/gen405/startup
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-11-08 23:46:58 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-11-08 23:46:58 +0000
commit57ed3939306d6db3543490c21bbd858c0b186c1c (patch)
tree43afa1978cb8d315be8d98ac87ff087d637fb799 /c/src/lib/libbsp/powerpc/gen405/startup
parent2001-11-08 Dennis Ehlin (ECS) <Dennis.Ehlin@ecs.ericsson.se> (diff)
downloadrtems-57ed3939306d6db3543490c21bbd858c0b186c1c.tar.bz2
2001-11-08 Dennis Ehlin (ECS) <Dennis.Ehlin@ecs.ericsson.se>
This modification is part of the submitted modifications necessary to support the IBM PPC405 family. This submission was reviewed by Thomas Doerfler <Thomas.Doerfler@imd-systems.de> who ensured it did not negatively impact the ppc403 BSPs. The submission and tracking process was captured as PR50. * ChangeLog, Makefile.am, README, bsp_specs, bsp_specs.dl, configure.ac, times, dlentry/.cvsignore, dlentry/Makefile.am, dlentry/dlentry.S, include/.cvsignore, include/Makefile.am, include/bsp.h, include/bspopts.h.in, include/coverhd.h, startup/.cvsignore, startup/Makefile.am, startup/bspclean.c, startup/bspstart.c, startup/linkcmds, startup/linkcmds.dl, startup/setvec.c, wrapup/.cvsignore, wrapup/Makefile.am: New files that are part of the new gen405 BSP.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/powerpc/gen405/startup/.cvsignore2
-rw-r--r--c/src/lib/libbsp/powerpc/gen405/startup/Makefile.am40
-rw-r--r--c/src/lib/libbsp/powerpc/gen405/startup/bspclean.c43
-rw-r--r--c/src/lib/libbsp/powerpc/gen405/startup/bspstart.c199
-rw-r--r--c/src/lib/libbsp/powerpc/gen405/startup/linkcmds152
-rw-r--r--c/src/lib/libbsp/powerpc/gen405/startup/linkcmds.dl142
-rw-r--r--c/src/lib/libbsp/powerpc/gen405/startup/setvec.c57
7 files changed, 635 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/gen405/startup/.cvsignore b/c/src/lib/libbsp/powerpc/gen405/startup/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen405/startup/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/c/src/lib/libbsp/powerpc/gen405/startup/Makefile.am b/c/src/lib/libbsp/powerpc/gen405/startup/Makefile.am
new file mode 100644
index 0000000000..8451c2999b
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen405/startup/Makefile.am
@@ -0,0 +1,40 @@
+##
+## $Id$
+##
+
+AUTOMAKE_OPTIONS = foreign 1.4
+
+VPATH = @srcdir@:@srcdir@/../../../shared
+
+PGM = $(ARCH)/startup.rel
+
+C_FILES = bspclean.c bsplibc.c bsppost.c bspstart.c bootcard.c main.c sbrk.c \
+ setvec.c gnatinstallhandler.c
+C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
+
+OBJS = $(C_O_FILES)
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../../../../../../automake/compile.am
+include $(top_srcdir)/../../../../../../automake/lib.am
+
+#
+# (OPTIONAL) Add local stuff here using +=
+#
+
+$(PGM): $(OBJS)
+ $(make-rel)
+
+$(PROJECT_RELEASE)/lib/linkcmds: linkcmds
+ $(INSTALL_DATA) $< $@
+
+# the .rel file built here will be put into libbsp.a by ../wrapup/Makefile
+TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/linkcmds
+
+all-local: $(ARCH) $(OBJS) $(PGM) $(TMPINSTALL_FILES)
+
+.PRECIOUS: $(PGM)
+
+EXTRA_DIST = bspclean.c bspstart.c linkcmds linkcmds.dl setvec.c
+
+include $(top_srcdir)/../../../../../../automake/local.am
diff --git a/c/src/lib/libbsp/powerpc/gen405/startup/bspclean.c b/c/src/lib/libbsp/powerpc/gen405/startup/bspclean.c
new file mode 100644
index 0000000000..bc4613629f
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen405/startup/bspclean.c
@@ -0,0 +1,43 @@
+/* bsp_cleanup()
+ *
+ * This routine normally is part of start.s and usually returns
+ * control to a monitor.
+ *
+ * INPUT: NONE
+ *
+ * OUTPUT: NONE
+ *
+ * Author: Andrew Bray <andy@i-cubed.co.uk>
+ *
+ * COPYRIGHT (c) 1995 by i-cubed ltd.
+ *
+ * To anyone who acknowledges that this file is provided "AS IS"
+ * without any express or implied warranty:
+ * permission to use, copy, modify, and distribute this file
+ * for any purpose is hereby granted without fee, provided that
+ * the above copyright notice and this notice appears in all
+ * copies, and that the name of i-cubed limited not be used in
+ * advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ * i-cubed limited makes no representations about the suitability
+ * of this software for any purpose.
+ *
+ * Derived from c/src/lib/libbsp/no_cpu/no_bsp/startup/bspclean.c:
+ *
+ * COPYRIGHT (c) 1989-1999.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <rtems.h>
+#include <bsp.h>
+
+void bsp_cleanup( void )
+{
+ rtems_fatal_error_occurred(0);
+}
diff --git a/c/src/lib/libbsp/powerpc/gen405/startup/bspstart.c b/c/src/lib/libbsp/powerpc/gen405/startup/bspstart.c
new file mode 100644
index 0000000000..5f65ebeb2e
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen405/startup/bspstart.c
@@ -0,0 +1,199 @@
+/* bsp_start()
+ *
+ * This routine starts the application. It includes application,
+ * board, and monitor specific initialization and configuration.
+ * The generic CPU dependent initialization has been performed
+ * before this routine is invoked.
+ *
+ * INPUT: NONE
+ *
+ * OUTPUT: NONE
+ *
+ * Author: Thomas Doerfler <td@imd.m.isar.de>
+ * IMD Ingenieurbuero fuer Microcomputertechnik
+ *
+ * COPYRIGHT (c) 1998 by IMD
+ *
+ * Changes from IMD are covered by the original distributions terms.
+ * This file has been derived from the papyrus BSP:
+ *
+ * Author: Andrew Bray <andy@i-cubed.co.uk>
+ *
+ * COPYRIGHT (c) 1995 by i-cubed ltd.
+ *
+ * To anyone who acknowledges that this file is provided "AS IS"
+ * without any express or implied warranty:
+ * permission to use, copy, modify, and distribute this file
+ * for any purpose is hereby granted without fee, provided that
+ * the above copyright notice and this notice appears in all
+ * copies, and that the name of i-cubed limited not be used in
+ * advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ * i-cubed limited makes no representations about the suitability
+ * of this software for any purpose.
+ *
+ * Modifications for spooling console driver and control of memory layout
+ * with linker command file by
+ * Thomas Doerfler <td@imd.m.isar.de>
+ * for these modifications:
+ * COPYRIGHT (c) 1997 by IMD, Puchheim, Germany.
+ *
+ * To anyone who acknowledges that this file is provided "AS IS"
+ * without any express or implied warranty:
+ * permission to use, copy, modify, and distribute this file
+ * for any purpose is hereby granted without fee, provided that
+ * the above copyright notice and this notice appears in all
+ * copies. IMD makes no representations about the suitability
+ * of this software for any purpose.
+ *
+ * Derived from c/src/lib/libbsp/no_cpu/no_bsp/startup/bspstart.c:
+ *
+ * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
+ * On-Line Applications Research Corporation (OAR).
+ * All rights assigned to U.S. Government, 1994.
+ *
+ * This material may be reproduced by or for the U.S. Government pursuant
+ * to the copyright license under the clause at DFARS 252.227-7013. This
+ * notice must appear in all copies of this file and its derivatives.
+ *
+ * Modifications for PPC405GP by Dennis Ehlin
+ *
+ * $Id$
+ */
+
+#include <string.h>
+#include <fcntl.h>
+
+#include <bsp.h>
+#include <rtems/libio.h>
+#include <rtems/libcsupport.h>
+#include <ictrl.h>
+
+/*
+ * The original table from the application and our copy of it with
+ * some changes.
+ */
+
+extern rtems_configuration_table Configuration;
+
+rtems_configuration_table BSP_Configuration;
+
+rtems_cpu_table Cpu_table;
+
+char *rtems_progname;
+void *bsp_ram_end = (void *)RAM_END; /* first addr behind avail. ram area */
+
+/* Initialize whatever libc we are using
+ * called from postdriver hook
+ */
+
+void bsp_postdriver_hook(void);
+void bsp_libc_init( void *, unsigned32, int );
+
+/*
+ *
+ * bsp_predriver_hook
+ *
+ * Before drivers are setup.
+ */
+
+void bsp_predriver_hook(void)
+{
+ rtems_status_code status;
+ /* init the PPC405 external interrupt controller handler... */
+ status = ictrl_init();
+}
+
+/*
+ * Function: bsp_pretasking_hook
+ * Created: 95/03/10
+ *
+ * Description:
+ * BSP pretasking hook. Called just before drivers are initialized.
+ * Used to setup libc and install any BSP extensions.
+ *
+ * NOTES:
+ * Must not use libc (to do io) from here, since drivers are
+ * not yet initialized.
+ *
+ */
+
+void bsp_pretasking_hook(void)
+{
+ extern int _end;
+ extern int _heap_end;
+ rtems_unsigned32 heap_start;
+ rtems_unsigned32 heap_size;
+ rtems_unsigned32 heap_end;
+
+
+ heap_start = (rtems_unsigned32) &_end;
+ if (heap_start & (CPU_ALIGNMENT-1))
+ heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
+
+ heap_end = (rtems_unsigned32) &_heap_end;
+ if (heap_end & (CPU_ALIGNMENT-1))
+ heap_end = (heap_end + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
+
+ heap_size = heap_end - heap_start;
+
+ bsp_libc_init((void *) heap_start, heap_size, 0); /* 64 * 1024 */
+
+#ifdef RTEMS_DEBUG
+ rtems_debug_enable( RTEMS_DEBUG_ALL_MASK );
+#endif
+
+}
+
+
+/*
+ * bsp_start
+ *
+ * This routine does the bulk of the system initialization.
+ */
+
+void bsp_start( void )
+{
+ /*
+ * Allocate the memory for the RTEMS Work Space. This can come from
+ * a variety of places: hard coded address, malloc'ed from outside
+ * RTEMS world (e.g. simulator or primitive memory manager), or (as
+ * typically done by stock BSPs) by subtracting the required amount
+ * of work space from the last physical address on the CPU board.
+ */
+
+ /*
+ * Need to "allocate" the memory for the RTEMS Workspace and
+ * tell the RTEMS configuration where it is. This memory is
+ * not malloc'ed. It is just "pulled from the air".
+ */
+ /* FIME: plan usage of RAM better:
+ - make top of ram dynamic,
+ - take out some part for persistant log
+ - make rest of ram to heap...
+ -remove RAM_END from bsp.h, this cannot be valid...
+ or must be a function call
+ */
+ BSP_Configuration.work_space_start = (void *)
+ ((char *)(bsp_ram_end)) - BSP_Configuration.work_space_size;
+
+ /*
+ * initialize the CPU table for this BSP
+ */
+
+ Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */
+ Cpu_table.predriver_hook = bsp_predriver_hook;
+ Cpu_table.postdriver_hook = bsp_postdriver_hook;
+ Cpu_table.interrupt_stack_size = CONFIGURE_INTERRUPT_STACK_MEMORY;
+
+ Cpu_table.clicks_per_usec = 300;
+ Cpu_table.serial_per_sec = 14625000; /* = (CPU Clock / UART Internal Clock Divisor) */
+ Cpu_table.serial_external_clock = 0;
+ Cpu_table.timer_internal_clock = 1;
+ Cpu_table.serial_xon_xoff = 0;
+ Cpu_table.serial_cts_rts = 1;
+ Cpu_table.serial_rate = 115200;
+ Cpu_table.timer_average_overhead = 2;
+ Cpu_table.timer_least_valid = 3;
+ Cpu_table.exceptions_in_RAM = TRUE;
+}
diff --git a/c/src/lib/libbsp/powerpc/gen405/startup/linkcmds b/c/src/lib/libbsp/powerpc/gen405/startup/linkcmds
new file mode 100644
index 0000000000..1a4d75ee66
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen405/startup/linkcmds
@@ -0,0 +1,152 @@
+/*
+ * This file contains directives for the GNU linker which are specific
+ * to the gen405
+ * This file is intended to be used together with dlentry.s
+ * it will generate downloadable code
+ *
+ * Modifications for gen405 by Dennis Ehlin
+ *
+ * $Id$
+ */
+
+OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
+ "elf32-powerpc")
+OUTPUT_ARCH(powerpc)
+ SEARCH_DIR(/usr/local/powerpc-rtems/lib);
+
+ENTRY(download_entry)
+
+MEMORY
+ {
+ RAM : ORIGIN = 0, LENGTH = 64M
+ FLASH : ORIGIN = 0xFFE00000, LENGTH = 16M
+ }
+SECTIONS
+{
+ .vectors 0x00000100 :
+ {
+ *(.vectors)
+ } > RAM
+
+ .text :
+ {
+ text.start = . ;
+ *(.entry)
+ *(.entry2)
+ *(.text)
+ *(.rodata)
+ *(.rodata1)
+ *(.gnu.linkonce.r*)
+ *(.descriptors)
+ *(rom_ver)
+ etext = ALIGN(0x10);
+ _etext = .;
+
+ *(.gnu.linkonce.t*)
+
+ __CTOR_LIST__ = .;
+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
+ *(.ctors)
+ LONG(0)
+ __CTOR_END__ = .;
+
+ __DTOR_LIST__ = .;
+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
+ *(.dtors)
+ LONG(0)
+ __DTOR_END__ = .;
+
+ *(.lit)
+ *(.shdata)
+ *(.init)
+ *(.fini)
+ _endtext = ALIGN(0x10);
+ text.end = .;
+ } > RAM
+
+ text.size = text.end - text.start;
+
+ /* R/W Data */
+ .data :
+ {
+ *(.data)
+ *(.data1)
+ *(.gnu.linkonce.d*)
+ PROVIDE (__SDATA_START__ = .);
+ *(.sdata)
+ } > RAM
+
+ PROVIDE (__EXCEPT_START__ = .);
+ .gcc_except_table :
+ {
+ *(.gcc_except_table)
+ } >RAM
+ PROVIDE (__EXCEPT_END__ = .);
+
+ __GOT_START__ = .;
+ .got :
+ {
+ s.got = .;
+ *(.got.plt) *(.got)
+ } > RAM
+ __GOT_END__ = .;
+
+ .got1 :
+ {
+ *(.got1)
+ } >RAM
+
+ PROVIDE (__GOT2_START__ = .);
+ PROVIDE (_GOT2_START_ = .);
+ .got2 :
+ {
+ *(.got2)
+ } >RAM
+ PROVIDE (__GOT2_END__ = .);
+ PROVIDE (_GOT2_END_ = .);
+
+ PROVIDE (__FIXUP_START__ = .);
+ PROVIDE (_FIXUP_START_ = .);
+ .fixup : { *(.fixup) } >RAM
+ PROVIDE (_FIXUP_END_ = .);
+ PROVIDE (__FIXUP_END__ = .);
+
+ PROVIDE (__SDATA2_START__ = .);
+ .sdata2 : { *(.sdata2) } >RAM
+ .sbss2 : { *(.sbss2) } >RAM
+ PROVIDE (__SBSS2_END__ = .);
+
+ .sbss2 : { *(.sbss2) } >RAM
+ PROVIDE (__SBSS2_END__ = .);
+
+ __SBSS_START__ = .;
+ .bss :
+ {
+ bss.start = .;
+ *(.bss) *(.sbss) *(COMMON)
+ bss.end = ALIGN(4);
+ } > RAM
+ __SBSS_END__ = .;
+
+ bss.size = bss.end - bss.start;
+ PROVIDE(_end = bss.end);
+
+ /* reserve 512K for heap */
+ heap.end = bss.end + 512K;
+ PROVIDE(_heap_end = heap.end);
+ /* reserve 64KByte for stack... */
+ stack.end = heap.end + 64K;
+ PROVIDE(_end = stack.end);
+
+ .line 0 : { *(.line) }
+ .debug 0 : { *(.debug) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_aregion 0 : { *(.debug_aregion) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+
+}
diff --git a/c/src/lib/libbsp/powerpc/gen405/startup/linkcmds.dl b/c/src/lib/libbsp/powerpc/gen405/startup/linkcmds.dl
new file mode 100644
index 0000000000..8e2128eebc
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen405/startup/linkcmds.dl
@@ -0,0 +1,142 @@
+/*
+ * This file contains directives for the GNU linker which are specific
+ * to the helas403
+ * This file is intended to be used together with dlentry.s
+ * it will generate downloadable code
+ *
+ * $Id$
+ */
+
+OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
+ "elf32-powerpc")
+OUTPUT_ARCH(powerpc)
+ SEARCH_DIR(/usr/local/powerpc-rtems/lib);
+
+ENTRY(download_entry)
+
+MEMORY
+ {
+ RAM : ORIGIN = 0, LENGTH = 8M
+ FLASH : ORIGIN = 0xFFF00000, LENGTH = 512K
+ }
+
+SECTIONS
+{
+ .vectors : 0x00010100
+ {
+ *(.vectors)
+ } > RAM
+
+ .text :
+ {
+ text.start = . ;
+ *(.entry)
+ *(.entry2)
+ *(.text)
+ *(.rodata)
+ *(.rodata1)
+ *(.descriptors)
+ *(rom_ver)
+ etext = ALIGN(0x10);
+ _etext = .;
+
+
+ __CTOR_LIST__ = .;
+ LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
+ *(.ctors)
+ LONG(0)
+ __CTOR_END__ = .;
+
+ __DTOR_LIST__ = .;
+ LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
+ *(.dtors)
+ LONG(0)
+ __DTOR_END__ = .;
+
+ *(.lit)
+ *(.shdata)
+ *(.init)
+ *(.fini)
+ _endtext = ALIGN(0x10);
+ text.end = .;
+ } > RAM
+
+ text.size = text.end - text.start;
+
+ /* R/W Data */
+ .data :
+ {
+ *(.data)
+ *(.data1)
+ PROVIDE (__SDATA_START__ = .);
+ *(.sdata)
+ } > RAM
+
+ PROVIDE (__EXCEPT_START__ = .);
+ .gcc_except_table :
+ {
+ *(.gcc_except_table)
+ } >RAM
+ PROVIDE (__EXCEPT_END__ = .);
+
+ __GOT_START__ = .;
+ .got :
+ {
+ s.got = .;
+ *(.got.plt) *(.got)
+ } > RAM
+ __GOT_END__ = .;
+
+ .got1 :
+ {
+ *(.got1)
+ } >RAM
+
+ PROVIDE (__GOT2_START__ = .);
+ PROVIDE (_GOT2_START_ = .);
+ .got2 :
+ {
+ *(.got2)
+ } >RAM
+ PROVIDE (__GOT2_END__ = .);
+ PROVIDE (_GOT2_END_ = .);
+
+ PROVIDE (__FIXUP_START__ = .);
+ PROVIDE (_FIXUP_START_ = .);
+ .fixup : { *(.fixup) } >RAM
+ PROVIDE (_FIXUP_END_ = .);
+ PROVIDE (__FIXUP_END__ = .);
+
+ PROVIDE (__SDATA2_START__ = .);
+ .sdata2 : { *(.sdata2) } >RAM
+ .sbss2 : { *(.sbss2) } >RAM
+ PROVIDE (__SBSS2_END__ = .);
+
+ .sbss2 : { *(.sbss2) } >RAM
+ PROVIDE (__SBSS2_END__ = .);
+
+ __SBSS_START__ = .;
+ .bss :
+ {
+ bss.start = .;
+ *(.bss) *(.sbss) *(COMMON)
+ bss.end = ALIGN(4);
+ } > RAM
+ __SBSS_END__ = .;
+
+ bss.size = bss.end - bss.start;
+ PROVIDE(_end = bss.end);
+
+ .line 0 : { *(.line) }
+ .debug 0 : { *(.debug) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_aregion 0 : { *(.debug_aregion) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+}
+
+
diff --git a/c/src/lib/libbsp/powerpc/gen405/startup/setvec.c b/c/src/lib/libbsp/powerpc/gen405/startup/setvec.c
new file mode 100644
index 0000000000..77c1ae3236
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/gen405/startup/setvec.c
@@ -0,0 +1,57 @@
+/* set_vector
+ *
+ * This routine installs an interrupt vector on the target Board/CPU.
+ * This routine is allowed to be as board dependent as necessary.
+ *
+ * INPUT:
+ * handler - interrupt handler entry point
+ * vector - vector number
+ * type - 0 indicates raw hardware connect
+ * 1 indicates RTEMS interrupt connect
+ *
+ * RETURNS:
+ * address of previous interrupt handler
+ *
+ * Author: Andrew Bray <andy@i-cubed.co.uk>
+ *
+ * COPYRIGHT (c) 1995 by i-cubed ltd.
+ *
+ * To anyone who acknowledges that this file is provided "AS IS"
+ * without any express or implied warranty:
+ * permission to use, copy, modify, and distribute this file
+ * for any purpose is hereby granted without fee, provided that
+ * the above copyright notice and this notice appears in all
+ * copies, and that the name of i-cubed limited not be used in
+ * advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ * i-cubed limited makes no representations about the suitability
+ * of this software for any purpose.
+ *
+ * Derived from c/src/lib/libbsp/no_cpu/no_bsp/startup/setvec.c:
+ *
+ * COPYRIGHT (c) 1989-1999.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#include <rtems.h>
+#include <bsp.h>
+
+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 */
+)
+{
+ rtems_isr_entry previous_isr;
+
+ rtems_interrupt_catch( handler, vector, (rtems_isr_entry *) &previous_isr );
+
+ return previous_isr;
+}
+