3 /* Uncomment this if you want srecords. This is needed for a.out
4 * if you plan to use GDB.
8 GROUP(-ldbug -lc -lgcc)
12 * Setup the memory map of the Arnewsh SBC5204
13 * stack grows down from high memory.
15 * The memory map look like this:
16 * +--------------------+ <- low memory
19 * | ctor list | the ctor and dtor lists are for
20 * | dtor list | C++ support
21 * +--------------------+
22 * | .data | initialized data goes here
24 * +--------------------+
26 * | __bss_start | start of bss, cleared by crt0
27 * | _end | start of heap, used by sbrk()
28 * +--------------------+
32 * | __stack | top of stack
33 * +--------------------+
37 ram (rwx) : ORIGIN = 0x10000, LENGTH = 0x30000
41 * allocate the stack to be at the top of memory, since the stack
45 PROVIDE (__stack = 0x30000);
48 * Initalize some symbols to be zero so we can reference them in the
49 * crt0 without core dumping. These functions are all optional, but
50 * we do this so we can have our crt0 always use them if they exist.
51 * This is so BSPs work better when using the crt0 installed with gcc.
52 * We have to initalize them twice, so we cover a.out (which prepends
53 * an underscore) and coff object file formats.
55 PROVIDE (hardware_init_hook = 0);
56 PROVIDE (_hardware_init_hook = 0);
57 PROVIDE (software_init_hook = 0);
58 PROVIDE (_software_init_hook = 0);
60 * stick everything in ram (of course)
70 LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
76 LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
84 __INIT_SECTION__ = . ;
85 LONG (0x4e560000) /* linkw %fp,#0 */
87 SHORT (0x4e5e) /* unlk %fp */
88 SHORT (0x4e75) /* rts */
90 __FINI_SECTION__ = . ;
91 LONG (0x4e560000) /* linkw %fp,#0 */
93 SHORT (0x4e5e) /* unlk %fp */
94 SHORT (0x4e75) /* rts */
124 .stabstr 0 (NOLOAD) :