The soft registers are defined in the section .softregs.
During the final link, this section is merged with either
the .page0 section (68HC11) or the .bss section (68HC12).
You can change this by using your own linker
script and putting the following definition:
*(.softregs)
In the section you want.
For example, copy /usr/m6811-elf/lib/ldscripts/m68hc11elfb.x to your project.
Change:
.page0 :
{
*(.page0)
*(.softregs)
} > page0
Into:
.page0 :
{
*(.page0)
} > page0
And add the *(.softregs) somewhere in .bss for example, like:
.bss :
{
__bss_start = .;
*(.softregs)
*(.sbss)
*(.scommon)
*(.dynbss)
*(.bss)
*(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
PROVIDE (_end = .);
} > data
And link with your own linker script with: -Wl,--script,myscript.ld
Be sure to compile with -mrelax otherwise you might have errors during
the link (addresses truncated because too big for direct addressing modes).
|