diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-01-12 16:38:56 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2000-01-12 16:38:56 +0000 |
commit | 69537ca9eccfa12142dea588fa34b70a6d220705 (patch) | |
tree | 6480f82ae96a1614df3d0719635213e194dc66ae /c/src/lib/libbsp/m68k | |
parent | Called symbol table ".nm" not .num like every other BSP. (diff) | |
download | rtems-69537ca9eccfa12142dea588fa34b70a6d220705.tar.bz2 |
Patch rtems-rc-20000104-16.diff from Ralf Corsepius <corsepiu@faw.uni-ulm.de>
that converts the libbsp/i386 subdirectory to full automake.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c | 10 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/efi332/include/bsp.h | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/efi332/start/start.c | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/efi68k/include/bsp.h | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/efi68k/start/start.c | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68302/start/start.S | 6 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68340/start/start.S | 20 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68360/start/start.S | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp | 84 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom | 82 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/idp/startup/bspstart.c | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/ods68302/start/reset.S | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/shared/start.S | 6 |
15 files changed, 142 insertions, 118 deletions
diff --git a/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c b/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c index 9fea220c0c..be4acce753 100644 --- a/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/dmv152/startup/bspstart.c @@ -56,14 +56,10 @@ void bsp_libc_init( void *, unsigned32, int ); void bsp_pretasking_hook(void) { - extern int end; - rtems_unsigned32 heap_start; + extern void *_HeapStart; + extern rtems_unsigned32 _HeapSize; - 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); + bsp_libc_init( &_HeapStart, _HeapSize, 0 ); #ifdef RTEMS_DEBUG rtems_debug_enable( RTEMS_DEBUG_ALL_MASK ); diff --git a/c/src/lib/libbsp/m68k/efi332/include/bsp.h b/c/src/lib/libbsp/m68k/efi332/include/bsp.h index 81e93ebeea..6e5ffea7d7 100644 --- a/c/src/lib/libbsp/m68k/efi332/include/bsp.h +++ b/c/src/lib/libbsp/m68k/efi332/include/bsp.h @@ -72,11 +72,11 @@ extern "C" { /* externals */ -extern char _endtext[]; -extern char _sdata[]; +extern char _etext[]; +extern char _copy_start[]; extern char _edata[]; -extern char __bss_start[]; -extern char _end[]; +extern char _bss_start[]; +extern char end[]; extern char _copy_data_from_rom[]; extern char __end_of_ram[]; diff --git a/c/src/lib/libbsp/m68k/efi332/start/start.c b/c/src/lib/libbsp/m68k/efi332/start/start.c index ef7f2beffd..fa48e03ae2 100644 --- a/c/src/lib/libbsp/m68k/efi332/start/start.c +++ b/c/src/lib/libbsp/m68k/efi332/start/start.c @@ -31,7 +31,7 @@ void dumby_start() { asm volatile ( "oriw #0x0700, %sr; moveal #M68Kvec, %a0; movec %a0, %vbr; - movel #_end, %d0; + movel #end, %d0; addl " STACK_SIZE ",%d0; movel %d0,%sp; movel %d0,%a6" @@ -198,8 +198,8 @@ void dumby_start() { * needed) and "zero-ing" the .bss section. */ { - register char *src = _endtext; - register char *dst = _sdata; + register char *src = _etext; + register char *dst = _copy_start; if (_copy_data_from_rom) /* ROM has data at end of text; copy it. */ @@ -207,7 +207,7 @@ void dumby_start() { *dst++ = *src++; /* Zero bss */ - for (dst = __bss_start; dst< _end; dst++) + for (dst = _bss_start; dst< end; dst++) *dst = 0; } diff --git a/c/src/lib/libbsp/m68k/efi68k/include/bsp.h b/c/src/lib/libbsp/m68k/efi68k/include/bsp.h index 62d74f77f3..eea1ea6348 100644 --- a/c/src/lib/libbsp/m68k/efi68k/include/bsp.h +++ b/c/src/lib/libbsp/m68k/efi68k/include/bsp.h @@ -72,11 +72,11 @@ extern "C" { /* externals */ -extern char _endtext[]; -extern char _sdata[]; +extern char _etext[]; +extern char _copy_start[]; extern char _edata[]; -extern char __bss_start[]; -extern char _end[]; +extern char _bss_start[]; +extern char end[]; extern char _copy_data_from_rom[]; extern char __end_of_ram[]; diff --git a/c/src/lib/libbsp/m68k/efi68k/start/start.c b/c/src/lib/libbsp/m68k/efi68k/start/start.c index f63381c57f..ea6973ee11 100644 --- a/c/src/lib/libbsp/m68k/efi68k/start/start.c +++ b/c/src/lib/libbsp/m68k/efi68k/start/start.c @@ -30,7 +30,7 @@ void boot_card(); /* disable interrupts, load stack pointer */ asm volatile ( "oriw #0x0700, %sr; - movel #_end, %d0; + movel #end, %d0; addl " STACK_SIZE ",%d0; movel %d0,%sp; link %a6, #0" @@ -40,8 +40,8 @@ void boot_card(); * needed) and "zero-ing" the .bss section. */ { - register char *src = _endtext; - register char *dst = _sdata; + register char *src = _etext; + register char *dst = _copy_start; if (_copy_data_from_rom) /* ROM has data at end of text; copy it. */ @@ -49,7 +49,7 @@ void boot_card(); *dst++ = *src++; /* Zero bss */ - for (dst = __bss_start; dst< _end; dst++) + for (dst = _bss_start; dst< end; dst++) *dst = 0; } diff --git a/c/src/lib/libbsp/m68k/gen68302/start/start.S b/c/src/lib/libbsp/m68k/gen68302/start/start.S index 5e46b06edf..a3dd257fe7 100644 --- a/c/src/lib/libbsp/m68k/gen68302/start/start.S +++ b/c/src/lib/libbsp/m68k/gen68302/start/start.S @@ -197,15 +197,15 @@ cpy_Bad1: move.l d1,(a0)+ | zero out uninitialized data area | zerobss: - moveal # SYM (end),a0 | find end of .bss - moveal # SYM (bss_start),a1 | find beginning of .bss + moveal # SYM (_end),a0 | find end of .bss + moveal # SYM (_bss_start),a1 | find beginning of .bss moveq #0,d0 loop: movel d0,a1@+ | to zero out uninitialized cmpal a0,a1 jlt loop | loop until _end reached - movel # SYM (end),d0 | d0 = end of bss/start of heap + movel # SYM (_end),d0 | d0 = end of bss/start of heap addl # SYM (heap_size),d0 | d0 = end of heap movel d0, SYM (stack_start) | Save for brk() routine addl # SYM (stack_size),d0 | make room for stack diff --git a/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c b/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c index ac7666d1bd..ae5f6774df 100644 --- a/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/gen68302/startup/bspstart.c @@ -56,10 +56,10 @@ void bsp_libc_init( void *, unsigned32, int ); void bsp_pretasking_hook(void) { - extern int end; + extern int _end; rtems_unsigned32 heap_start; - heap_start = (rtems_unsigned32) &end; + heap_start = (rtems_unsigned32) &_end; if (heap_start & (CPU_ALIGNMENT-1)) heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1); diff --git a/c/src/lib/libbsp/m68k/gen68340/start/start.S b/c/src/lib/libbsp/m68k/gen68340/start/start.S index 43b4186eaf..3569118a8b 100644 --- a/c/src/lib/libbsp/m68k/gen68340/start/start.S +++ b/c/src/lib/libbsp/m68k/gen68340/start/start.S @@ -501,8 +501,8 @@ sync_wait349: /*--------------------------------------------------------*/ /* -- copy to address of the 68349 initialization code -- */ - lea.l _copy_start(%pc),crt0_ptr3 - lea.l _copy_end(%pc),crt0_ptr4 + lea.l _copy_start_code(%pc),crt0_ptr3 + lea.l _copy_end_code(%pc),crt0_ptr4 move.l crt0_ptr4,crt0_temp sub.l crt0_ptr3,crt0_temp add.l #3,crt0_temp | adjust to next long word @@ -518,7 +518,7 @@ _copy_loop: /*------------------------------------*/ /* -- start of initialization code -- */ -_copy_start: +_copy_start_code: bra.l _begin_68349_init /*----------------------------------------------------------*/ @@ -709,7 +709,7 @@ _init_cache_end: jmp.l (_fill_test) | must be absolute long -_copy_end: +_copy_end_code: /*------------------------------------------------- initialization code for the 68340 board @@ -812,11 +812,11 @@ _dont_fill: */ PUBLIC (_CopyDataClearBSSAndStart) SYM(_CopyDataClearBSSAndStart): - lea copy_start,a0 | Get start of DATA in RAM - lea SYM(etext),a2 | Get start of DATA in ROM + lea SYM(_copy_start),a0 | Get start of DATA in RAM + lea SYM(_etext),a2 | Get start of DATA in ROM cmpl a0,a2 | Are they the same? beq.s NOCOPY | Yes, no copy necessary - lea copy_end,a1 | Get end of DATA in RAM + lea SYM(_copy_end),a1 | Get end of DATA in RAM bra.s COPYLOOPTEST | Branch into copy loop COPYLOOP: movel a2@+,a0@+ | Copy word from ROM to RAM @@ -825,8 +825,8 @@ COPYLOOPTEST: bcs.s COPYLOOP | No, skip NOCOPY: - lea clear_start,a0 | Get start of BSS - lea clear_end,a1 | Get end of BSS + lea _clear_start,a0 | Get start of BSS + lea _clear_end,a1 | Get end of BSS clrl d0 | Value to set bra.s ZEROLOOPTEST | Branch into clear loop ZEROLOOP: @@ -835,7 +835,7 @@ ZEROLOOPTEST: cmpl a1,a0 | Done? bcs.s ZEROLOOP | No, skip - movel #stack_init,a7 | set master stack pointer + movel #_stack_init,a7 | set master stack pointer movel d0,a7@- | environp movel d0,a7@- | argv movel d0,a7@- | argc diff --git a/c/src/lib/libbsp/m68k/gen68360/start/start.S b/c/src/lib/libbsp/m68k/gen68360/start/start.S index 4a10e7748c..c3110c9780 100644 --- a/c/src/lib/libbsp/m68k/gen68360/start/start.S +++ b/c/src/lib/libbsp/m68k/gen68360/start/start.S @@ -394,7 +394,7 @@ ZEROLOOPTEST: cmpl a1,a0 | Done? bcs.s ZEROLOOP | No, skip - movel #stack_init,a7 | set master stack pointer + movel #_stack_init,a7 | set master stack pointer pea env | envp pea arg | argv movel d0,a7@- | argc diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in b/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in index 602d11b39c..771c89f5cb 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in +++ b/c/src/lib/libbsp/m68k/gen68360/startup/Makefile.in @@ -42,7 +42,7 @@ $(INSTALLDIRS): # (OPTIONAL) Add local stuff here using += # -DEFINES += +DEFINES += -DUSE_INIT_FINI CPPFLAGS += CFLAGS += diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp index e89ea38e86..6661fc2c2a 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp +++ b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.bootp @@ -1,9 +1,9 @@ /* * This file contains GNU linker directives for a generic MC68360 board. - * Variations in hardware type and dynamic memory size can be made - * by overriding some values with linker command-line arguments. + * Variations in memory size and allocation can be made by + * overriding some values with linker command-line arguments. * - * These linker directives are for producing a PROM version. + * These linker directives are for producing a bootstrap PROM version. * The data segment is placed at the end of the text segment in the PROM. * The start-up code takes care of copying this region to RAM. * @@ -11,15 +11,12 @@ * University of Saskatchewan * Saskatoon, Saskatchewan, CANADA * eric@skatter.usask.ca - * + * * $Id$ */ /* * Declare some sizes. - * XXX: The assignment of ". += XyzSize;" fails in older gld's if the - * number used there is not constant. If this happens to you, edit - * the lines marked XXX below to use a constant value. */ HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000; StackSize = DEFINED(StackSize) ? StackSize : 0x1000; @@ -43,7 +40,6 @@ SECTIONS { */ rom : { _RomBase = .; - __RomBase = .; } >rom /* @@ -51,44 +47,66 @@ SECTIONS { */ ram : { _RamBase = .; - __RamBase = .; } >ram /* * Text, data and bss segments */ - .text : AT (0x00000000) { - CREATE_OBJECT_SYMBOLS + .text : AT(0x0) { *(.text) - . = ALIGN (16); - *(.eh_fram) - . = ALIGN (16); + /* + * C++ constructors/destructors + */ + *(.gnu.linkonce.t.*) /* - * C++ constructors + * Initialization and finalization code. */ - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) + PROVIDE (_init = .); + *crti.o(.init) + *(.init) + *crtn.o(.init) + PROVIDE (_fini = .); + *crti.o(.fini) + *(.fini) + *crtn.o(.fini) + + /* + * C++ constructors/destructors + */ + . = ALIGN (16); + *crtbegin.o(.ctors) *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) + *crtend.o(.ctors) + *crtbegin.o(.dtors) *(.dtors) - LONG(0) - __DTOR_END__ = .; + *crtend.o(.dtors) - . = ALIGN (16); + /* + * Exception frame info + */ + . = ALIGN (16); + *(.eh_frame) - etext = .; - _etext = .; - } >rom + /* + * Read-only data + */ + . = ALIGN (16); + _rodata_start = . ; + *(.rodata) + *(.gnu.linkonce.r*) + + . = ALIGN (16); + PROVIDE (etext = .); + } >rom .data : AT(SIZEOF(.text)) { copy_start = .; *(.data) + *(.gnu.linkonce.d*) + *(.gcc_except_table) . = ALIGN (16); - _edata = .; + PROVIDE (_edata = .); copy_end = .; } >myram .bss : { @@ -99,20 +117,16 @@ SECTIONS { *(.bss) *(COMMON) . = ALIGN (16); - _end = .; + PROVIDE (end = .); _HeapStart = .; - __HeapStart = .; - . += HeapSize; /* XXX -- Old gld can't handle this */ - . += StackSize; /* XXX -- Old gld can't handle this */ - /* . += 0x10000; */ /* HeapSize for old gld */ - /* . += 0x1000; */ /* StackSize for old gld */ + . += HeapSize; + . += StackSize; . = ALIGN (16); stack_init = .; clear_end = .; _WorkspaceBase = .; - __WorkspaceBase = .; } >myram /* diff --git a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom index b816761852..522bea54ca 100644 --- a/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom +++ b/c/src/lib/libbsp/m68k/gen68360/startup/linkcmds.prom @@ -1,7 +1,7 @@ /* * This file contains GNU linker directives for a generic MC68360 board. - * Variations in hardware type and dynamic memory size can be made - * by overriding some values with linker command-line arguments. + * Variations in memory size and allocation can be made by + * overriding some values with linker command-line arguments. * * These linker directives are for producing a PROM version. * The data segment is placed at the end of the text segment in the PROM. @@ -11,15 +11,12 @@ * University of Saskatchewan * Saskatoon, Saskatchewan, CANADA * eric@skatter.usask.ca - * + * * $Id$ */ /* * Declare some sizes. - * XXX: The assignment of ". += XyzSize;" fails in older gld's if the - * number used there is not constant. If this happens to you, edit - * the lines marked XXX below to use a constant value. */ HeapSize = DEFINED(HeapSize) ? HeapSize : 0x10000; StackSize = DEFINED(StackSize) ? StackSize : 0x1000; @@ -42,7 +39,6 @@ SECTIONS { */ rom : { _RomBase = .; - __RomBase = .; } >rom /* @@ -50,44 +46,66 @@ SECTIONS { */ ram : { _RamBase = .; - __RamBase = .; } >ram /* * Text, data and bss segments */ - .text : AT (0x00000000) { - CREATE_OBJECT_SYMBOLS + .text : AT(0x0) { *(.text) - . = ALIGN (16); - *(.eh_fram) - . = ALIGN (16); + /* + * C++ constructors/destructors + */ + *(.gnu.linkonce.t.*) /* - * C++ constructors + * Initialization and finalization code. */ - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) + PROVIDE (_init = .); + *crti.o(.init) + *(.init) + *crtn.o(.init) + PROVIDE (_fini = .); + *crti.o(.fini) + *(.fini) + *crtn.o(.fini) + + /* + * C++ constructors/destructors + */ + . = ALIGN (16); + *crtbegin.o(.ctors) *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) + *crtend.o(.ctors) + *crtbegin.o(.dtors) *(.dtors) - LONG(0) - __DTOR_END__ = .; + *crtend.o(.dtors) - . = ALIGN (16); + /* + * Exception frame info + */ + . = ALIGN (16); + *(.eh_frame) - etext = .; - _etext = .; - } >rom + /* + * Read-only data + */ + . = ALIGN (16); + _rodata_start = . ; + *(.rodata) + *(.gnu.linkonce.r*) + + . = ALIGN (16); + PROVIDE (etext = .); + } >rom .data : AT(SIZEOF(.text)) { copy_start = .; *(.data) + *(.gnu.linkonce.d*) + *(.gcc_except_table) . = ALIGN (16); - _edata = .; + PROVIDE (_edata = .); copy_end = .; } >ram .bss : { @@ -98,20 +116,16 @@ SECTIONS { *(.bss) *(COMMON) . = ALIGN (16); - _end = .; + PROVIDE (end = .); _HeapStart = .; - __HeapStart = .; - . += HeapSize; /* XXX -- Old gld can't handle this */ - . += StackSize; /* XXX -- Old gld can't handle this */ - /* . += 0x10000; */ /* HeapSize for old gld */ - /* . += 0x1000; */ /* StackSize for old gld */ + . += HeapSize; + . += StackSize; . = ALIGN (16); stack_init = .; clear_end = .; _WorkspaceBase = .; - __WorkspaceBase = .; } >ram /* diff --git a/c/src/lib/libbsp/m68k/idp/startup/bspstart.c b/c/src/lib/libbsp/m68k/idp/startup/bspstart.c index a3bd194c32..d67cb92225 100644 --- a/c/src/lib/libbsp/m68k/idp/startup/bspstart.c +++ b/c/src/lib/libbsp/m68k/idp/startup/bspstart.c @@ -63,10 +63,10 @@ void bsp_libc_init( void *, unsigned32, int ); void bsp_pretasking_hook(void) { - extern int end; + extern int _end; rtems_unsigned32 heap_start; - heap_start = (rtems_unsigned32) &end; + heap_start = (rtems_unsigned32) &_end; if (heap_start & (CPU_ALIGNMENT-1)) heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1); diff --git a/c/src/lib/libbsp/m68k/ods68302/start/reset.S b/c/src/lib/libbsp/m68k/ods68302/start/reset.S index 71d1071243..95447da7e1 100644 --- a/c/src/lib/libbsp/m68k/ods68302/start/reset.S +++ b/c/src/lib/libbsp/m68k/ods68302/start/reset.S @@ -438,9 +438,9 @@ copy_remap: | copy_data: - moveal #etext,%a0 | find the end of .text - moveal #data_start,%a1 | find the beginning of .data - moveal #edata,%a2 | find the end of .data + moveal #_etext,%a0 | find the end of .text + moveal #_copy_start,%a1 | find the beginning of .data + moveal #_edata,%a2 | find the end of .data copy_data_loop: @@ -454,7 +454,7 @@ copy_data_loop: zerobss: moveal #end,%a0 | find end of .bss - moveal #bss_start,%a1 | find beginning of .bss + moveal #_bss_start,%a1 | find beginning of .bss moveq #0,%d0 zerobss_loop: diff --git a/c/src/lib/libbsp/m68k/shared/start.S b/c/src/lib/libbsp/m68k/shared/start.S index 6ab0974948..2791fab91e 100644 --- a/c/src/lib/libbsp/m68k/shared/start.S +++ b/c/src/lib/libbsp/m68k/shared/start.S @@ -68,15 +68,15 @@ SYM (start_around): | zero out uninitialized data area | zerobss: - moveal # SYM (end),a0 | find end of .bss - moveal # SYM (bss_start),a1 | find beginning of .bss + moveal # SYM (end),a0 | find end of .bss + moveal # SYM (_bss_start),a1 | find beginning of .bss movel #0,d0 loop: movel #0,a1@+ | to zero out uninitialized cmpal a0,a1 jlt loop | loop until _end reached - movel # SYM (stack_init),d0 | d0 = stop of stack + movel # SYM (_stack_init),d0 | d0 = stop of stack andl #0xffffffc0,d0 | align it on 16 byte boundary movw #0x3700,sr | SUPV MODE,INTERRUPTS OFF!!! movel d0,a7 | set master stack pointer |