Use chopstx
[gnuk/neug.git] / src / neug.ld.in
index d2ddc4f..6223752 100644 (file)
@@ -1,35 +1,12 @@
-/*
-    ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
-                 2011 Giovanni Di Sirio.
-
-    This file is part of ChibiOS/RT.
-
-    ChibiOS/RT is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3 of the License, or
-    (at your option) any later version.
-
-    ChibiOS/RT is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-                                      ---
-
-    A special exception to the GPL can be applied should you wish to distribute
-    a combined work that includes ChibiOS/RT, without being obliged to provide
-    the source code for any proprietary components. See the file exception.txt
-    for full details of how and when the exception can be applied.
-*/
-
 /*
  * ST32F103 memory setup.
  */
-__main_stack_size__     = 0x0400;
-__process_stack_size__  = 0x0400;
+__main_stack_size__     = 0x0100;      /* Exception handlers     */
+__process0_stack_size__  = 0x0400;     /* main */
+__process1_stack_size__  = 0x0100;     /* led */
+__process2_stack_size__  = 0x0200;     /* rng */
+__process3_stack_size__  = 0x0100;     /* intr: usb */
+__process4_stack_size__  = 0x0100;     /* intr: adc dma */
 
 MEMORY
 {
@@ -56,10 +33,10 @@ SECTIONS
         KEEP(*(.vectors))
        . = ALIGN(16);
        *(.sys.version)
-       */sys.o(.text)
-       */sys.o(.text.*)
-        */sys.o(.rodata)
-       */sys.o(.rodata.*)
+       build/sys.o(.text)
+       build/sys.o(.text.*)
+        build/sys.o(.rodata)
+       build/sys.o(.rodata.*)
        . = ALIGN(1024);
        *(.sys.0)
        *(.sys.1)
@@ -68,28 +45,12 @@ SECTIONS
 
     _text = .;
 
-    startup : ALIGN(16) SUBALIGN(16)
+    .startup : ALIGN(128) SUBALIGN(128)
     {
-        KEEP(*(vectors))
+        KEEP(*(.startup.vectors))
         . = ALIGN (16);
     } > flash =0xffffffff
 
-    constructors : ALIGN(4) SUBALIGN(4)
-    {
-        PROVIDE(__init_array_start = .);
-        KEEP(*(SORT(.init_array.*)))
-        KEEP(*(.init_array))
-        PROVIDE(__init_array_end = .);
-    } > flash
-
-    destructors : ALIGN(4) SUBALIGN(4)
-    {
-        PROVIDE(__fini_array_start = .);
-        KEEP(*(.fini_array))
-        KEEP(*(SORT(.fini_array.*)))
-        PROVIDE(__fini_array_end = .);
-    } > flash
-
     .text : ALIGN(16) SUBALIGN(16)
     {
         *(.text.startup.*)
@@ -121,17 +82,32 @@ SECTIONS
 
     .stacks :
     {
+        . = ALIGN(8);
+        __process4_stack_base__ = .;
+        . += __process4_stack_size__;
+        . = ALIGN(8);
+        __process4_stack_end__ = .;
+        __process3_stack_base__ = .;
+        . += __process3_stack_size__;
+        . = ALIGN(8);
+        __process3_stack_end__ = .;
+        __process2_stack_base__ = .;
+        . += __process2_stack_size__;
+        . = ALIGN(8);
+        __process2_stack_end__ = .;
+        __process1_stack_base__ = .;
+        . += __process1_stack_size__;
+        . = ALIGN(8);
+        __process1_stack_end__ = .;
+        __process0_stack_base__ = .;
+        . += __process0_stack_size__;
+        . = ALIGN(8);
+        __process0_stack_end__ = .;
         . = ALIGN(8);
         __main_stack_base__ = .;
         . += __main_stack_size__;
         . = ALIGN(8);
         __main_stack_end__ = .;
-        __process_stack_base__ = .;
-        __main_thread_stack_base__ = .;
-        . += __process_stack_size__;
-        . = ALIGN(8);
-        __process_stack_end__ = .;
-        __main_thread_stack_end__ = .;
     } > ram
 
     .data :