SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-csky-little" BIG_OUTPUT_FORMAT="elf32-csky-big" LITTLE_OUTPUT_FORMAT="elf32-csky-little" NO_REL_RELOCS=yes TARGET_PAGE_SIZE=0x400 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" TEXT_START_ADDR=0x60000000 DATA_ADDR=0x20000000 # The default address spaces # RAM: 0x0 - 0x1FFFFFFF # RAM: 0x20000000 - 0x3FFFFFFF # RAM: 0x60000000 - 0x7FFFFFFF # # There are some symbols used in the crt.S # __stack: The stack top # __heap_start: The heap start # __heap_end: The heap end # __csky_exit: Be used by qemu to check exit OTHER_SYMBOLS=' PROVIDE (__stack = 0x01000000 - 0x8); PROVIDE (__heap_start = 0x00000100); PROVIDE (__heap_end = 0x00900000); PROVIDE (__csky_exit = 0x10002000); ' CHECK_RELOCS_AFTER_OPEN_INPUT=yes NONPAGED_TEXT_START_ADDR=0 ATTRS_SECTIONS='.csky.attributes 0 : { KEEP (*(.csky.attributes)) KEEP (*(.csky.attributes)) }' ARCH=csky EMBEDDED=yes EXTRA_EM_FILE=cskyelf # There is a problem with the NOP value - it must work for both # big endian and little endian systems. Unfortunately there is # no symmetrical mcore opcode that functions as a noop. The # chosen solution is to use "tst r0, r14". This is a symmetrical # value, and apart from the corruption of the C bit, it has no other # side effects. Since the carry bit is never tested without being # explicitly set first, and since the NOP code is only used as a # fill value between independently viable pieces of code, it should # not matter. NOP=0 ENTRY=__start OTHER_BSS_SYMBOLS="__sbss__ = . ;" OTHER_BSS_END_SYMBOLS="__ebss__ = . ;" # This sets the stack to the top of the simulator memory (2^19 bytes). # STACK_ADDR=0x80000 TEMPLATE_NAME=elf