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; |
} |
|