summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/mrm332
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-20 10:35:35 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-20 13:52:14 +0200
commit99648958668d3a33ee57974479b36201fe303f34 (patch)
tree6f27ea790e2823c6156e71219a4f54680263fac6 /c/src/lib/libbsp/m68k/mrm332
parentbsps: Move start files to bsps (diff)
downloadrtems-99648958668d3a33ee57974479b36201fe303f34.tar.bz2
bsps: Move startup files to bsps
Adjust build support files to new directory layout. This patch is a part of the BSP source reorganization. Update #3285.
Diffstat (limited to 'c/src/lib/libbsp/m68k/mrm332')
-rw-r--r--c/src/lib/libbsp/m68k/mrm332/Makefile.am4
-rw-r--r--c/src/lib/libbsp/m68k/mrm332/startup/bsp_specs9
-rw-r--r--c/src/lib/libbsp/m68k/mrm332/startup/linkcmds212
-rw-r--r--c/src/lib/libbsp/m68k/mrm332/startup/start_c.c130
4 files changed, 2 insertions, 353 deletions
diff --git a/c/src/lib/libbsp/m68k/mrm332/Makefile.am b/c/src/lib/libbsp/m68k/mrm332/Makefile.am
index 11d6ea953c..73aa3bc3be 100644
--- a/c/src/lib/libbsp/m68k/mrm332/Makefile.am
+++ b/c/src/lib/libbsp/m68k/mrm332/Makefile.am
@@ -3,7 +3,7 @@ ACLOCAL_AMFLAGS = -I ../../../../aclocal
include $(top_srcdir)/../../../../automake/compile.am
include $(top_srcdir)/../../bsp.am
-dist_project_lib_DATA = startup/bsp_specs
+dist_project_lib_DATA = ../../../../../../bsps/m68k/mrm332/start/bsp_specs
@@ -17,7 +17,7 @@ project_lib_LIBRARIES = librtemsbsp.a
librtemsbsp_a_SOURCES =
# startup
-librtemsbsp_a_SOURCES += startup/start_c.c
+librtemsbsp_a_SOURCES += ../../../../../../bsps/m68k/mrm332/start/start_c.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/m68k/mrm332/start/bspstart.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/bspstart-empty.c
librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/start/sbrk.c
diff --git a/c/src/lib/libbsp/m68k/mrm332/startup/bsp_specs b/c/src/lib/libbsp/m68k/mrm332/startup/bsp_specs
deleted file mode 100644
index 87638cc027..0000000000
--- a/c/src/lib/libbsp/m68k/mrm332/startup/bsp_specs
+++ /dev/null
@@ -1,9 +0,0 @@
-%rename endfile old_endfile
-%rename startfile old_startfile
-
-*startfile:
-%{!qrtems: %(old_startfile)} \
-%{!nostdlib: %{qrtems: crti.o%s crtbegin.o%s}}
-
-*endfile:
-%{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s crtn.o%s}
diff --git a/c/src/lib/libbsp/m68k/mrm332/startup/linkcmds b/c/src/lib/libbsp/m68k/mrm332/startup/linkcmds
deleted file mode 100644
index 1ee7117d6b..0000000000
--- a/c/src/lib/libbsp/m68k/mrm332/startup/linkcmds
+++ /dev/null
@@ -1,212 +0,0 @@
-/* linkcmds
- */
-
-OUTPUT_ARCH(m68k)
-ENTRY(start)
-STARTUP(start.o)
-__DYNAMIC = 0;
-
-/*
- * ROM:
- * +--------------------+ <- low memory
- * | .text |
- * | etext |
- * | ctor list | the ctor and dtor lists are for
- * | dtor list | C++ support
- * | _endtext |
- * | temporary .data | .data is moved to RAM by crt0
- * | |
- * +--------------------+ <- high memory
- *
- *
- * RAM:
- * +--------------------+ <- low memory
- * | .data | initialized data goes here
- * | _sdata |
- * | _edata |
- * +--------------------+
- * | .bss |
- * | __bss_start | start of bss, cleared by crt0
- * | _end | start of heap, used by sbrk()
- * +--------------------+
- * | heap space |
- * | _ENDHEAP |
- * | stack space |
- * | __stack | top of stack
- * +--------------------+ <- high memory
- */
-
-/*
- * Declare some sizes.
- */
-RomBase = DEFINED(RomBase) ? RomBase : 0x90000;
-RamBase = DEFINED(RamBase) ? RamBase : 0x03000;
-RamSize = DEFINED(RamSize) ? RamSize : 0x7d000;
-_RamEnd = RamBase + RamSize;
-
-MEMORY
-{
- rom : ORIGIN = 0x90000, LENGTH = 0x70000
- ram : ORIGIN = 0x03000, LENGTH = 0x7d000
-}
-
-_copy_data_from_rom = 1;
-HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
-_StackSize = DEFINED(_StackSize) ? _StackSize : 0x2000;
-
-
-/*
- *
- */
-SECTIONS
-{
- .text :
- {
- . = .;
- text_start = .;
- _text_start = .;
- *(.text*)
- . = ALIGN (16);
-
- /*
- * C++ constructors/destructors
- */
- *(.gnu.linkonce.t.*)
-
- /*
- * Initialization and finalization code.
- *
- * Various files can provide initialization and finalization
- * functions. crtbegin.o and crtend.o are two instances. The
- * body of these functions are in .init and .fini sections. We
- * accumulate the bodies here, and prepend function prologues
- * from crti.o and function epilogues from crtn.o. crti.o must
- * be linked first; crtn.o must be linked last. Because these
- * are wildcards, it doesn't matter if the user does not
- * actually link against crti.o and crtn.o; the linker won't
- * look for a file to match a wildcard. The wildcard also
- * means that it doesn't matter which directory crti.o and
- * crtn.o are in.
- */
- PROVIDE (_init = .);
- *crti.o(.init)
- *(.init)
- *crtn.o(.init)
- PROVIDE (_fini = .);
- *crti.o(.fini)
- *(.fini)
- *crtn.o(.fini)
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- /*
- * C++ constructors/destructors
- *
- * gcc uses crtbegin.o to find the start of the constructors
- * and destructors so we make sure it is first. Because this
- * is a wildcard, it doesn't matter if the user does not
- * actually link against crtbegin.o; the linker won't look for
- * a file to match a wildcard. The wildcard also means that
- * it doesn't matter which directory crtbegin.o is in. The
- * constructor and destructor list are terminated in
- * crtend.o. The same comments apply to it.
- */
- . = ALIGN (16);
- *crtbegin.o(.ctors)
- *(.ctors)
- *crtend.o(.ctors)
- *crtbegin.o(.dtors)
- *(.dtors)
- *crtend.o(.dtors)
-
- /*
- * Exception frame info
- */
- . = ALIGN (16);
- *(.eh_frame)
-
- /*
- * Read-only data
- */
- . = ALIGN (16);
- _rodata_start = . ;
- *(.rodata*)
- KEEP (*(SORT(.rtemsroset.*)))
- *(.gnu.linkonce.r*)
-
- . = ALIGN (16);
- PROVIDE (_etext = .);
- _endtext = .;
- __data_start_rom = .;
- } > rom
- .tdata : {
- _TLS_Data_begin = .;
- *(.tdata .tdata.* .gnu.linkonce.td.*)
- _TLS_Data_end = .;
- } > rom
- .tbss : {
- _TLS_BSS_begin = .;
- *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
- _TLS_BSS_end = .;
- } > rom
- _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
- _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
- _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
- _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
- _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
- _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
- .gcc_exc :
- AT ( ADDR(.tdata) + SIZEOF( .tdata ) )
- {
- *(.gcc_exc)
- } > ram
- .data : AT(__data_start_rom)
- {
- PROVIDE (_copy_start = .);
- *(.data*)
- KEEP (*(SORT(.rtemsrwset.*)))
- *(.gnu.linkonce.d*)
- *(.gcc_except_table*)
- *(.jcr)
- . = ALIGN (16);
- PROVIDE (_edata = .);
- PROVIDE (_copy_end = .);
- } > ram
- .shbss :
- {
- *(.shbss)
- } > ram
- .bss :
- {
- M68Kvec = .;
- . += (256 * 4);
- _clear_start = .;
- *(.dynbss)
- *(.bss* .gnu.linkonce.b.*)
- *(COMMON)
- . = ALIGN (16);
- PROVIDE (end = .);
- . += _StackSize;
- . = ALIGN (16);
- _stack_init = .;
- _clear_end = .;
-
- WorkAreaBase = .;
- } > ram
- .stab . (NOLOAD) :
- {
- [ .stab ]
- }
- .stabstr . (NOLOAD) :
- {
- [ .stabstr ]
- }
-}
diff --git a/c/src/lib/libbsp/m68k/mrm332/startup/start_c.c b/c/src/lib/libbsp/m68k/mrm332/startup/start_c.c
deleted file mode 100644
index 060c96b004..0000000000
--- a/c/src/lib/libbsp/m68k/mrm332/startup/start_c.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
- * @file
- *
- * MRM332 C Start Up Code
- */
-
-/*
- * COPYRIGHT (c) 2000.
- * Matt Cross <profesor@gweep.net>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- *
- */
-
-#include <bsp.h>
-#include <bsp/bootcard.h>
-#include <mrm332.h>
-#include <rtems/m68k/sim.h>
-#define __START_C__
-
-/*
- * This prototype really should have the noreturn attribute but
- * that causes a warning. Not sure how to fix that.
- */
-/* void dumby_start () __attribute__ ((noreturn)); */
-void start_c(void);
-
-void start_c(void) {
-
-#ifdef SET_EDIV
-#define OPTIONAL_EDIV EDIV
-#else
-#define OPTIONAL_EDIV 0
-#endif
-
- /* Synthesizer Control Register */
- /* see section(s) 4.8 */
- /* end include in ram_init.S */
- *SYNCR = (unsigned short int) (SAM(MRM_W, 15, VCO) | SAM(0x0, 14, PRESCALE)
- | SAM(MRM_Y, 8, COUNTER) | OPTIONAL_EDIV);
- while (!(*SYNCR & SLOCK))
- ; /* protect from clock overshoot */
- /* include in ram_init.S */
- *SYNCR = (unsigned short int) (SAM(MRM_W, 15, VCO) | SAM(MRM_X, 14,
- PRESCALE) | SAM(MRM_Y, 8, COUNTER) | OPTIONAL_EDIV);
-
- /* System Protection Control Register */
- /* !!! can only write to once after reset !!! */
- /* see section 3.8.4 of the SIM Reference Manual */
- *SYPCR = (unsigned char) (HME | BME);
-
- /* Periodic Interrupr Control Register */
- /* see section 3.8.2 of the SIM Reference Manual */
- *PICR = (unsigned short int) (SAM(0, 8, PIRQL) | SAM(MRM_PIV, 0, PIV));
- /* ^^^ zero disables interrupt, don't enable here or ram_init will
- be wrong. It's enabled below. */
-
- /* Periodic Interrupt Timer Register */
- /* see section 3.8.3 of the SIM Reference Manual */
- *PITR = (unsigned short int) (SAM(0x09, 0, PITM));
- /* 1.098mS interrupt, assuming 32.768 KHz input clock */
-
- /* Port C Data */
- /* load values before enabled */
- *PORTC = (unsigned char) 0x0;
-
- /* Port E and F Data Register */
- /* see section 9 of the SIM Reference Manual */
- *PORTE0 = (unsigned char) 0;
- *PORTF0 = (unsigned char) 0;
-
- /* Port E and F Data Direction Register */
- /* see section 9 of the SIM Reference Manual */
- *DDRE = (unsigned char) 0xff;
- *DDRF = (unsigned char) 0xfd;
-
- /* Port E and F Pin Assignment Register. Set up Port E and F as I/O */
- /* see section 9 of the SIM Reference Manual */
- *PEPAR = (unsigned char) 0;
- *PFPAR = (unsigned char) 0;
-
- /* end of SIM initalization code */
- /* end include in ram_init.S */
-
- /*
- * Initialize RAM by copying the .data section out of ROM (if
- * needed) and "zero-ing" the .bss section.
- */
- {
- register char *src = _etext;
- register char *dst = _copy_start;
-
- if (_copy_data_from_rom) {
- /* ROM has data at end of text; copy it. */
- while (dst < _edata)
- *dst++ = *src++;
- }
- /* Zero bss */
- for (dst = _clear_start; dst < end; dst++) {
- *dst = 0;
- }
- }
-
- /*
- * Initialize vector table.
- */
- {
- rtems_isr_entry *monitors_vector_table;
-
- m68k_get_vbr(monitors_vector_table);
-
- M68Kvec[4] = monitors_vector_table[4]; /* breakpoints vector */
- M68Kvec[9] = monitors_vector_table[9]; /* trace vector */
- M68Kvec[31] = monitors_vector_table[31]; /* level 7 interrupt */
- M68Kvec[47] = monitors_vector_table[47]; /* system call vector */
- M68Kvec[66] = monitors_vector_table[66]; /* user defined */
-
- m68k_set_vbr(&M68Kvec);
- }
-
-
- /*
- * Execute main with arguments argc and agrv.
- */
- boot_card((void*)0);
- reboot();
-
-}