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/no_cpu/no_bsp/startup
- from Rev 30 to Rev 173
- ↔ Reverse comparison
Rev 30 → Rev 173
/bspstart.c
0,0 → 1,105
/* |
* 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. |
* |
* 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: bspstart.c,v 1.2 2001-09-27 12:00:27 chris Exp $ |
*/ |
|
#include <bsp.h> |
#include <rtems/libio.h> |
|
#include <libcsupport.h> |
|
#include <string.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; |
|
/* |
* Use the shared implementations of the following routines |
*/ |
|
void bsp_postdriver_hook(void); |
void bsp_libc_init( void *, unsigned32, int ); |
|
/* |
* 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". |
*/ |
|
BSP_Configuration.work_space_start = (void *) 0; |
|
/* |
* initialize the CPU table for this BSP |
*/ |
|
Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */ |
Cpu_table.postdriver_hook = bsp_postdriver_hook; |
Cpu_table.interrupt_stack_size = CONFIGURE_INTERRUPT_STACK_MEMORY; |
} |
/linkcmds
0,0 → 1,63
/* |
* This file contains directives for the GNU linker which are specific |
* to the NO_CPU NO_BSP BOARD. |
* |
* 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: linkcmds,v 1.2 2001-09-27 12:00:27 chris Exp $ |
*/ |
|
MEMORY |
{ |
ram : org = 0x0, l = 1M |
} |
|
SECTIONS |
{ |
.text 0x0 : |
{ |
text_start = . ; |
_text_start = . ; |
*(.text) |
. = ALIGN (16); |
|
*(.eh_fram) |
. = ALIGN (16); |
|
/* |
* C++ constructors |
*/ |
__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__ = .; |
_etext = ALIGN( 0x10 ) ; |
} |
.data ADDR( .text ) + SIZEOF( .text ): |
{ |
data_start = . ; |
_data_start = . ; |
*(.data) |
_edata = ALIGN( 0x10 ) ; |
} |
.bss ADDR( .data ) + SIZEOF( .data ): |
{ |
bss_start = . ; |
_bss_start = . ; |
*(.bss) |
*(COMMON) |
end = . ; |
__end = . ; |
} |
} |
/main.c
0,0 → 1,37
/* main() |
* |
* This is the entry point for the application. It calls |
* the bsp_start routine to the actual dirty work. |
* |
* 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: main.c,v 1.2 2001-09-27 12:00:27 chris Exp $ |
*/ |
|
#include <rtems.h> |
#include <bsp.h> |
|
int main( |
int argc, |
char **argv, |
char **environp |
) |
{ |
extern void bsp_start( int, char**, char ** ); |
|
bsp_start( argc, argv, environp ); |
|
/* |
* May be able to return to the "crt/start.s" code but also |
* may not be able to. Do something here which is board dependent. |
*/ |
|
rtems_fatal_error_occurred( 0 ); |
|
return 0; /* just to satisfy the native compiler */ |
} |
/bspclean.c
0,0 → 1,25
/* bsp_cleanup() |
* |
* This routine normally is part of start.s and usually returns |
* control to a monitor. |
* |
* INPUT: NONE |
* |
* OUTPUT: NONE |
* |
* 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:27 chris Exp $ |
*/ |
|
#include <rtems.h> |
#include <bsp.h> |
|
void bsp_cleanup( void ) |
{ |
} |
/Makefile.am
0,0 → 1,38
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:00:27 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 main.c bootcard.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) $< $@ |
|
TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/linkcmds |
|
all-local: $(ARCH) $(OBJS) $(PGM) $(TMPINSTALL_FILES) |
|
.PRECIOUS: $(PGM) |
|
EXTRA_DIST = bspclean.c bspstart.c linkcmds main.c setvec.c |
|
include $(top_srcdir)/../../../../../../automake/local.am |
/setvec.c
0,0 → 1,43
/* 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 |
* |
* 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:27 chris Exp $ |
*/ |
|
#include <rtems.h> |
#include <bsp.h> |
|
no_cpu_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 */ |
) |
{ |
no_cpu_isr_entry previous_isr; |
|
if ( type ) |
rtems_interrupt_catch( handler, vector, (rtems_isr_entry *) &previous_isr ); |
else { |
/* XXX: install non-RTEMS ISR as "raw" interupt */ |
} |
return previous_isr; |
} |
|