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).