2004-03-30 22:04:32 +08:00
|
|
|
# Linker Script for National Semiconductor's CR16C-ELF32.
|
|
|
|
|
|
|
|
test -z "$ENTRY" && ENTRY=_start
|
|
|
|
cat <<EOF
|
|
|
|
|
|
|
|
/* Example Linker Script for linking NS CR16C or CR16CPlus
|
|
|
|
elf32 files, which were compiled with either the near data
|
|
|
|
model or the default data model. */
|
|
|
|
|
2009-10-10 12:34:39 +08:00
|
|
|
${RELOCATING+ENTRY(${ENTRY})}
|
2004-03-30 22:04:32 +08:00
|
|
|
|
|
|
|
MEMORY
|
|
|
|
{
|
|
|
|
near_rom : ORIGIN = 0x4, LENGTH = 512K - 4
|
|
|
|
near_ram : ORIGIN = 512K, LENGTH = 512K - 64K
|
|
|
|
rom : ORIGIN = 1M, LENGTH = 3M
|
|
|
|
ram : ORIGIN = 4M, LENGTH = 10M
|
|
|
|
}
|
|
|
|
|
|
|
|
SECTIONS
|
|
|
|
{
|
|
|
|
/* The heap is located in near memory, to suit both the near and
|
|
|
|
default data models. The heap and stack are aligned to the bus
|
|
|
|
width, as a speed optimization for accessing data located
|
|
|
|
there. The alignment to 4 bytes is compatible for both the CR16C
|
|
|
|
bus width (2 bytes) and CR16CPlus bus width (4 bytes). */
|
|
|
|
|
Add support for Xilinx MicroBlaze processor.
* bfd/Makefile.am: Add cpu-microblaze.{lo,c}, elf32-microblaze.{lo,c}.
* bfd/Makefile.in: Same.
* bfd/archures.c: Add bfd_arch_microblaze.
* bfd/bfd-in2.h: Regenerate.
* bfd/config.bfd: Add microblaze target.
* bfd/configure: Add bfd_elf32_microblaze_vec target.
* bfd/configure.in: Same.
* bfd/cpu-microblaze.c: New.
* bfd/elf32-microblaze.c: New.
* bfd/libbfd-in.h: Add prototype _bfd_dwarf2_fixup_section_debug_loc().
* bfd/libbfd.h: Regenerate.
* bfd/reloc.c: Add MICROBLAZE relocations.
* bfd/section.c: Add struct relax_table and relax_count to section.
* bfd/targets.c: Add bfd_elf32_microblaze_vec.
* binutils/MAINTAINERS: Add self as maintainer.
* binutils/readelf.c: Include elf/microblaze.h, add EM_MICROBLAZE &
EM_MICROBLAZE_OLD to guess_is_rela(), dump_relocations(),
get_machine_name().
* config.sub: Add microblaze target.
* configure: Same.
* configure.ac: Same.
* gas/Makefile.am: add microblaze to CPU_TYPES, config/tc-microblaze.c to
TARGET_CPU_CFILES, config/tc-microblaze.h to TARGET_CPU_HFILES, add
DEP_microblaze_elf target.
* gas/Makefile.in: Same.
* gas/config/tc-microblaze.c: Add MicroBlaze assembler.
* gas/config/tc-microblaze.h: Add header for tc-microblaze.c.
* gas/configure: Add microblaze target.
* gas/configure.in: Same.
* gas/configure.tgt: Same.
* gas/doc/Makefile.am: Add c-microblaze.texi to CPU_DOCS.
* gas/doc/Makefile.in: Same.
* gas/doc/all.texi: Set MICROBLAZE.
* gas/doc/as.texinfo: Add MicroBlaze doc links.
* gas/doc/c-microblaze.texi: New MicroBlaze docs.
* include/dis-asm.h: Decl print_insn_microblaze().
* include/elf/common.h: Define EM_MICROBLAZE & EM_MICROBLAZE_OLD.
* include/elf/microblaze.h: New reloc definitions.
* ld/Makefile.am: Add eelf32mb_linux.o, eelf32microblaze.o to
ALL_EMULATIONS, targets.
* ld/Makefile.in: Same.
* ld/configure.tgt: Add microblaze*-linux*, microblaze* targets.
* ld/emulparams/elf32mb_linux.sh: New.
* ld/emulparams/elf32microblaze.sh. New.
* ld/scripttempl/elfmicroblaze.sc: New.
* opcodes/Makefile.am: Add microblaze-opc.h to HFILES, microblaze-dis.c to
CFILES, microblaze-dis.lo to ALL_MACHINES, targets.
* opcodes/Makefile.in: Same.
* opcodes/configure: Add bfd_microblaze_arch target.
* opcodes/configure.in: Same.
* opcodes/disassemble.c: Define ARCH_microblaze, return
print_insn_microblaze().
* opcodes/microblaze-dis.c: New MicroBlaze disassembler.
* opcodes/microblaze-opc.h: New MicroBlaze opcode definitions.
* opcodes/microblaze-opcm.h: New MicroBlaze opcode types.
2009-08-07 01:38:04 +08:00
|
|
|
.text : { __TEXT_START = .; *(.text) __TEXT_END = .; } > rom
|
|
|
|
.rdata : { __RDATA_START = .; *(.rdata_4) *(.rdata_2) *(.rdata_1) __RDATA_END = .; } > near_rom
|
|
|
|
.ctor ALIGN(4) : { __CTOR_LIST = .; *(.ctors) __CTOR_END = .; } > near_rom
|
|
|
|
.dtor ALIGN(4) : { __DTOR_LIST = .; *(.dtors) __DTOR_END = .; } > near_rom
|
|
|
|
.data : { __DATA_START = .; *(.data_4) *(.data_2) *(.data_1) *(.data) __DATA_END = .; } > ram AT > rom
|
|
|
|
.bss (NOLOAD) : { __BSS_START = .; *(.bss_4) *(.bss_2) *(.bss_1) *(.bss) *(COMMON) __BSS_END = .; } > ram
|
|
|
|
.nrdata : { __NRDATA_START = .; *(.nrdat_4) *(.nrdat_2) *(.nrdat_1) __NRDATA_END = .; } > near_rom
|
|
|
|
.ndata : { __NDATA_START = .; *(.ndata_4) *(.ndata_2) *(.ndata_1) __NDATA_END = .; } > near_ram AT > rom
|
|
|
|
.nbss (NOLOAD) : { __NBSS_START = .; *(.nbss_4) *(.nbss_2) *(.nbss_1) *(.ncommon) __NBSS_END = .; } > near_ram
|
|
|
|
.heap (NOLOAD) : { . = ALIGN(4); __HEAP_START = .; . += 0x2000; __HEAP_MAX = .; } > near_ram
|
|
|
|
.stack (NOLOAD) : { . = ALIGN(4); . += 0x6000; __STACK_START = .; } > ram
|
|
|
|
.istack (NOLOAD) : { . = ALIGN(2); . += 0x100; __ISTACK_START = .; } > ram
|
2004-03-30 22:04:32 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
__DATA_IMAGE_START = LOADADDR(.data);
|
|
|
|
__NDATA_IMAGE_START = LOADADDR(.ndata);
|
|
|
|
|
|
|
|
EOF
|