OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/rtos/rtems/c/src/lib/libbsp/powerpc/helas403/startup
    from Rev 30 to Rev 173
    Reverse comparison

Rev 30 → Rev 173

/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: linkcmds.dl,v 1.2 2001-09-27 12:00:36 chris Exp $
*/
 
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) }
}
 
 
/bspstart.c
0,0 → 1,188
/* 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.
*
* $Id: bspstart.c,v 1.2 2001-09-27 12:00:36 chris Exp $
*/
 
 
#include <bsp.h>
#include <ictrl.h>
#include <rtems/libio.h>
#include <libcsupport.h>
#include <string.h>
#include <fcntl.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 PPC403GA 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;
rtems_unsigned32 heap_start;
 
heap_start = (rtems_unsigned32) &_end;
if (heap_start & (CPU_ALIGNMENT-1))
heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1);
 
bsp_libc_init((void *) heap_start, 64 * 1024, 0);
#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 = 25;
Cpu_table.serial_per_sec = 25000000;
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 = 9600;
Cpu_table.timer_average_overhead = 2;
Cpu_table.timer_least_valid = 3;
Cpu_table.exceptions_in_RAM = TRUE;
}
/linkcmds
0,0 → 1,200
/*
* This file contains directives for the GNU linker which are specific
* to the helas-403
* This file is intended to be used together with flashentry.s
* it will generate a ROM that can be started directly after powerup reset
* $Id: linkcmds,v 1.2 2001-09-27 12:00:36 chris Exp $
*/
 
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
"elf32-powerpc")
OUTPUT_ARCH(powerpc)
SEARCH_DIR(/usr/local/powerpc-rtems/lib);
ENTRY(flash_entry)
MEMORY
{
RAM : ORIGIN = 0, LENGTH = 8M
FLASH : ORIGIN = 0xFFF00000, LENGTH = 512K
}
 
/* DIRTY TRICK: repeat addresses here, so we can work with them... */
flash.start = 0xFFF00000;
flash.size = 512K;
 
SECTIONS
{
.entry :
{
*(.entry)
} > FLASH /* this is ROM for flash_entry */
.text :
{
text.start = . ;
*(.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)
. = ALIGN(0x10);
_endtext = .;
text.end = .;
copy.src = .;
copy.tmptop.txt = .;
} > FLASH /* this is ROM for flash_entry */
 
text.size = text.end - text.start;
 
/* R/W Data */
/* place vectors to start at offset 0x100... */
/* IMPORTANT: sections ".fill" and ".vectors" must be the first in RAM!!*/
.fill 0x00010000 :
{
. = . + 0x0100;
} > RAM
.vectors : AT (copy.src)
{
copy.dest = .;
*(.vectors)
. = ALIGN(0x10);
copy.tmptop.vec = .;
} > RAM
 
.data : AT (copy.tmptop.vec - copy.dest + copy.src)
{
*(.data)
*(.data1)
PROVIDE (__SDATA_START__ = .);
*(.sdata)
. = ALIGN(0x10);
copy.tmptop.dat = .;
} > RAM
PROVIDE (__EXCEPT_START__ = .);
.gcc_except_table : AT (copy.tmptop.dat - copy.dest + copy.src)
{
*(.gcc_except_table)
. = ALIGN(0x10);
copy.tmptop.exc = .;
} >RAM
PROVIDE (__EXCEPT_END__ = .);
 
__GOT_START__ = .;
.got : AT (copy.tmptop.exc - copy.dest + copy.src)
{
s.got = .;
*(.got.plt) *(.got)
. = ALIGN(0x10);
copy.tmptop.got = .;
} > RAM
__GOT_END__ = .;
 
.got1 : AT (copy.tmptop.got - copy.dest + copy.src)
{
*(.got1)
. = ALIGN(0x10);
copy.tmptop.gt1 = .;
} >RAM
 
PROVIDE (__GOT2_START__ = .);
PROVIDE (_GOT2_START_ = .);
.got2 : AT (copy.tmptop.gt1 - copy.dest + copy.src)
{
*(.got2)
. = ALIGN(0x10);
copy.tmptop.gt2 = .;
} >RAM
PROVIDE (__GOT2_END__ = .);
PROVIDE (_GOT2_END_ = .);
 
PROVIDE (__FIXUP_START__ = .);
PROVIDE (_FIXUP_START_ = .);
.fixup : AT (copy.tmptop.gt2 - copy.dest + copy.src)
{
*(.fixup)
. = ALIGN(0x10);
copy.tmptop.fix = .;
} >RAM
PROVIDE (_FIXUP_END_ = .);
PROVIDE (__FIXUP_END__ = .);
PROVIDE (__SDATA2_START__ = .);
.sdata2 : AT (copy.tmptop.fix - copy.dest + copy.src)
{
*(.sdata2)
. = ALIGN(0x10);
copy.tmptop.sda = .;
} >RAM
 
copy.size = copy.tmptop.sda - copy.dest;
 
.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;
 
/* reserve 16KByte for stack... */
stack.end = bss.end + 16K;
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) }
 
/*
* place reset instruction into last word of FLASH
* NOTE: after reset, PPC403 starts executing from address
* 0xFFFFFFFC
* The reset section is placed in ROM at 0xF7FFFFFC instead,
* but a mirror of this address exists at 0xFFFFFFFC due to
* the initial memory controller setup
*/
.reset flash.start - 4 + flash.size :
{
*(.reset)
} > FLASH
}
 
 
/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: bspclean.c,v 1.2 2001-09-27 12:00:36 chris Exp $
*/
 
#include <rtems.h>
#include <bsp.h>
 
void bsp_cleanup( void )
{
rtems_fatal_error_occurred(0);
}
/Makefile.am
0,0 → 1,39
##
## $Id: Makefile.am,v 1.2 2001-09-27 12:00:36 chris Exp $
##
 
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/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
/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: setvec.c,v 1.2 2001-09-27 12:00:36 chris Exp $
*/
 
#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;
}
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.