From 8f10c925f6a4a02a870d16057ec9e57f5c6ee2c3 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 3 Jan 2003 16:45:10 +0000 Subject: 2002-12-08 Greg Menke * bsp_specs: Added crtbegin/crtend and INIT_FINI for C++ support. * linkcmds: Added .init, .fini & related sections. --- c/src/lib/libbsp/mips/genmongoosev/ChangeLog | 5 +++ c/src/lib/libbsp/mips/genmongoosev/bsp_specs | 9 ++-- c/src/lib/libbsp/mips/genmongoosev/start/start.S | 13 +++--- .../lib/libbsp/mips/genmongoosev/startup/linkcmds | 35 ++++++++++++---- c/src/lib/libbsp/mips/jmr3904/ChangeLog | 5 +++ c/src/lib/libbsp/mips/jmr3904/bsp_specs | 8 ++-- c/src/lib/libbsp/mips/jmr3904/startup/linkcmds | 49 +++++++++++++++------- 7 files changed, 91 insertions(+), 33 deletions(-) (limited to 'c/src/lib/libbsp/mips') diff --git a/c/src/lib/libbsp/mips/genmongoosev/ChangeLog b/c/src/lib/libbsp/mips/genmongoosev/ChangeLog index 2f8f689ecf..f5d360264c 100644 --- a/c/src/lib/libbsp/mips/genmongoosev/ChangeLog +++ b/c/src/lib/libbsp/mips/genmongoosev/ChangeLog @@ -1,3 +1,8 @@ +2002-12-08 Greg Menke + + * bsp_specs: Added crtbegin/crtend and INIT_FINI for C++ support. + * linkcmds: Added .init, .fini & related sections. + 2002-12-14 Ralf Corsepius * clock/Makefile.am: Don't include @RTEMS_BSP@.cfg. diff --git a/c/src/lib/libbsp/mips/genmongoosev/bsp_specs b/c/src/lib/libbsp/mips/genmongoosev/bsp_specs index 20bb94652c..c4b277e75b 100644 --- a/c/src/lib/libbsp/mips/genmongoosev/bsp_specs +++ b/c/src/lib/libbsp/mips/genmongoosev/bsp_specs @@ -5,7 +5,7 @@ %rename link old_link *cpp: -%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded) +%(old_cpp) %{qrtems: -D__embedded__ -D__USE_INIT_FINI__ } -Asystem(embedded) *lib: %{!qrtems: %(old_lib)} %{!nostdlib: %{qrtems: --start-group \ @@ -15,9 +15,12 @@ *startfile: %{!qrtems: %(old_startfile)} %{!nostdlib: %{qrtems: \ -%{!qnostartfile: %{!qrtems_debug: start.o%s} \ - %{qrtems_debug: start_g.o%s}}}} + %{!qnostartfile: %{!qrtems_debug: start.o%s} \ + %{qrtems_debug: start_g.o%s}} crti.o%s crtbegin.o%s }} *link: %(old_link) %{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start} +*endfile: +%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s } + diff --git a/c/src/lib/libbsp/mips/genmongoosev/start/start.S b/c/src/lib/libbsp/mips/genmongoosev/start/start.S index 95761abd48..1076b8255d 100644 --- a/c/src/lib/libbsp/mips/genmongoosev/start/start.S +++ b/c/src/lib/libbsp/mips/genmongoosev/start/start.S @@ -411,9 +411,9 @@ zerobss: ** Function: _init */ .globl exit .text - .globl _init - .ent _init -_init: + .globl _initialize_rtems + .ent _initialize_rtems +_initialize_rtems: /* ** Print 'i'. Starting to initialize RTEMS. @@ -445,7 +445,7 @@ _init: */ jal _sys_exit nop - .end _init + .end _initialize_rtems /********************************************************************** @@ -578,7 +578,10 @@ _cpuinit: # INV = 0: 1 : Disable invalidate mode # LOCK = 0: 0 : Disable cache lock # - li t0,0x00027AA0 + # 0x00027AA0 caches on + # 0x00027220 caches off + # + li t0,0x00027aa0 sw t0,M_BIU # diff --git a/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds b/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds index 21f2e55398..f8d68486a8 100644 --- a/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds +++ b/c/src/lib/libbsp/mips/genmongoosev/startup/linkcmds @@ -14,7 +14,7 @@ _RamBase = DEFINED(_RamBase) ? _RamBase : 0x80000000; _RamSize = DEFINED(_RamSize) ? _RamSize : 32M; HeapSize = DEFINED(HeapSize) ? HeapSize : 0x40000; -_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000; +_StackSize = DEFINED(_StackSize) ? _StackSize : 0x4000; ClockRate = DEFINED(ClockRate) ? ClockRate : 12000000; @@ -29,11 +29,11 @@ SECTIONS .text : { _ftext = . ; - *(.init) - eprol = .; + + */start.o(.text) + *(.text) *(.text.*) - *(.eh_frame) *(.gnu.linkonce.t*) *(.mips16.fn.*) *(.mips16.call.*) @@ -41,10 +41,25 @@ SECTIONS *(.rel.sdata) *(.rel.dyn) PROVIDE (__runtime_reloc_stop = .); - *(.fini) + *(.gcc_except_table) + *(.eh_frame_hdr) + *(.eh_frame) } >ram + .init : + { + KEEP(*(.init)) + + } > ram + + .fini : + { + KEEP(*(.fini)) + + } > ram + + .ctors : { /* gcc uses crtbegin.o to find the start of @@ -99,13 +114,17 @@ SECTIONS *(.gnu.linkonce.d*) } >ram - - .lit8 : + .jcr : { . = ALIGN(8); + KEEP (*(.jcr)) - _gp = . + 0x8000; + _gp = ALIGN(16) + 0x7440; __global = _gp; + } >ram + + .lit8 : + { *(.lit8) } >ram diff --git a/c/src/lib/libbsp/mips/jmr3904/ChangeLog b/c/src/lib/libbsp/mips/jmr3904/ChangeLog index b10468ab21..d3aa899ac0 100644 --- a/c/src/lib/libbsp/mips/jmr3904/ChangeLog +++ b/c/src/lib/libbsp/mips/jmr3904/ChangeLog @@ -1,3 +1,8 @@ +2002-12-08 Greg Menke + + * bsp_specs: Added crtbegin/crtend and INIT_FINI for C++ support. + * linkcmds: Added .init, .fini & related sections. + 2002-12-14 Ralf Corsepius * clock/Makefile.am: Don't include @RTEMS_BSP@.cfg. diff --git a/c/src/lib/libbsp/mips/jmr3904/bsp_specs b/c/src/lib/libbsp/mips/jmr3904/bsp_specs index 29eebcc50e..f60e4cfe73 100644 --- a/c/src/lib/libbsp/mips/jmr3904/bsp_specs +++ b/c/src/lib/libbsp/mips/jmr3904/bsp_specs @@ -5,7 +5,7 @@ %rename link old_link *cpp: -%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded) +%(old_cpp) %{qrtems: -D__embedded__ -D__USE_INIT_FINI__} -Asystem(embedded) *lib: %{!qrtems: %(old_lib)} %{!nostdlibs: %{qrtems: --start-group \ @@ -16,9 +16,11 @@ *startfile: %{!qrtems: %(old_startfile)} %{!nostdlibs: %{qrtems: \ -%{!qrtems_debug: start.o%s} \ -%{qrtems_debug: start_g.o%s}}} + %{!qrtems_debug: start.o%s} \ + %{qrtems_debug: start_g.o%s} crti.o%s crtbegin.o%s }} *link: %(old_link) %{!qrtems: %(old_link)} %{qrtems: -dc -dp -N -e _start} +*endfile: +%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s } diff --git a/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds b/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds index 0c52ba4b3e..02b9d192a2 100644 --- a/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds +++ b/c/src/lib/libbsp/mips/jmr3904/startup/linkcmds @@ -22,16 +22,27 @@ SECTIONS *(.text) *(.text.*) *(.gnu.linkonce.t*) - *(.init) *(.mips16.fn.*) *(.mips16.call.*) PROVIDE (__runtime_reloc_start = .); *(.rel.sdata) PROVIDE (__runtime_reloc_stop = .); - *(.fini) - etext = .; - _etext = .; - } + + *(.gcc_except_table) + *(.eh_frame_hdr) + *(.eh_frame) + } + + .init : + { + KEEP(*(.init)) + } + + .fini : + { + KEEP(*(.fini)) + } + .ctors : { /* gcc uses crtbegin.o to find the start of @@ -62,9 +73,11 @@ SECTIONS KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) + + etext = .; + _etext = .; } - . = .; .rdata : { *(.rdata) *(.rodata) @@ -72,30 +85,38 @@ SECTIONS *(.gnu.linkonce.r*) } _fdata = ALIGN(16); + .data : { *(.data) *(.data.*) *(.gnu.linkonce.d*) - SORT(CONSTRUCTORS) + SORT(CONSTRUCTORS) } . = ALIGN(8); - _gp = . + 0x8000; + + .jcr : { + KEEP (*(.jcr)) + } + + _gp = ALIGN(16) + 0x7440; __global = _gp; + + .sdata : { + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s*) + } .lit8 : { *(.lit8) } .lit4 : { *(.lit4) } - .sdata : { - *(.sdata) - *(.sdata.*) - *(.gnu.linkonce.s*) - } - . = ALIGN(4); + edata = .; _edata = .; _fbss = .; + .sbss : { *(.sbss) *(.scommon) -- cgit v1.2.3