*
* This program 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; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
*/
MEMORY {
- rom (rx) : ORIGIN = 0x08000000, LENGTH = 32K
- ram (!w) : ORIGIN = 0x20000000, LENGTH = 5632
- stack (!w) : ORIGIN = 0x20001600, LENGTH = 512
+ rom (rx) : ORIGIN = 0x08001000, LENGTH = 28K
+ ram (!w) : ORIGIN = 0x20000000, LENGTH = 6k - 128
+ stack (!w) : ORIGIN = 0x20000000 + 6k - 128, LENGTH = 128
}
INCLUDE registers.ld
* Rom contents
*/
- .text ORIGIN(rom) : {
- __text_start__ = .;
+ .interrupt ORIGIN(ram) : AT (ORIGIN(rom)) {
+ __interrupt_start__ = .;
+ __interrupt_rom__ = ORIGIN(rom);
*(.interrupt) /* Interrupt vectors */
+ __interrupt_end__ = .;
+ } > ram
- . = ORIGIN(rom) + 0x100;
-
+ .text ORIGIN(rom) + 0x100 : {
+ __text_start__ = .;
/* Ick. What I want is to specify the
* addresses of some global constants so
*/
ao_romconfig.o(.romconfig*)
ao_product.o(.romconfig*)
+
*(.text*) /* Executable code */
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
*(.rodata*) /* Constants */
} > rom
-
- .ARM.exidx : {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- } > rom
__text_end__ = .;
/* Boot data which must live at the start of ram so that