Search
lxdream.org :: lxdream/test/aica.x
lxdream 0.9.1
released Jun 29
Download Now
filename test/aica.x
changeset 812:8cc61d5ea1f8
author nkeynes
date Wed Nov 10 08:37:42 2010 +1000 (13 years ago)
permissions -rw-r--r--
last change Add chain pointer to the xlat cache, so that we can maintain multiple blocks
for the same address. This prevents thrashing in cases where we would other
keep retranslating the same blocks over and over again due to varying
xlat_sh4_mode values
file annotate diff log raw
nkeynes@812
     1
/* Sega Dreamcast linker script */
nkeynes@812
     2
nkeynes@812
     3
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm",
nkeynes@812
     4
	      "elf32-littlearm")
nkeynes@812
     5
OUTPUT_ARCH(arm)
nkeynes@812
     6
ENTRY(start)
nkeynes@812
     7
 SEARCH_DIR(/usr/local/dcdev/arm-elf/lib);
nkeynes@812
     8
/* Do we need any of these for elf?
nkeynes@812
     9
   __DYNAMIC = 0;    */
nkeynes@812
    10
nkeynes@812
    11
MEMORY
nkeynes@812
    12
{
nkeynes@812
    13
  ram (rwx) : ORIGIN = 0x00000000, LENGTH = 0x00200000
nkeynes@812
    14
}
nkeynes@812
    15
nkeynes@812
    16
SECTIONS
nkeynes@812
    17
{
nkeynes@812
    18
  /* Read-only sections, merged into text segment: */
nkeynes@812
    19
/*  . = 0x1000;*/
nkeynes@812
    20
  .interp     : { *(.interp) 	}
nkeynes@812
    21
  .hash          : { *(.hash)		}
nkeynes@812
    22
  .dynsym        : { *(.dynsym)		}
nkeynes@812
    23
  .dynstr        : { *(.dynstr)		}
nkeynes@812
    24
  .gnu.version   : { *(.gnu.version)	}
nkeynes@812
    25
  .gnu.version_d   : { *(.gnu.version_d)	}
nkeynes@812
    26
  .gnu.version_r   : { *(.gnu.version_r)	}
nkeynes@812
    27
  .rel.init      : { *(.rel.init)	}
nkeynes@812
    28
  .rela.init     : { *(.rela.init)	}
nkeynes@812
    29
  .rel.text      :
nkeynes@812
    30
    {
nkeynes@812
    31
      *(.rel.text)
nkeynes@812
    32
      *(.rel.text.*)
nkeynes@812
    33
      *(.rel.gnu.linkonce.t*)
nkeynes@812
    34
    }
nkeynes@812
    35
  .rela.text     :
nkeynes@812
    36
    {
nkeynes@812
    37
      *(.rela.text)
nkeynes@812
    38
      *(.rela.text.*)
nkeynes@812
    39
      *(.rela.gnu.linkonce.t*)
nkeynes@812
    40
    }
nkeynes@812
    41
  .rel.fini      : { *(.rel.fini)	}
nkeynes@812
    42
  .rela.fini     : { *(.rela.fini)	}
nkeynes@812
    43
  .rel.rodata    :
nkeynes@812
    44
    {
nkeynes@812
    45
      *(.rel.rodata)
nkeynes@812
    46
      *(.rel.rodata.*)
nkeynes@812
    47
      *(.rel.gnu.linkonce.r*)
nkeynes@812
    48
    }
nkeynes@812
    49
  .rela.rodata   :
nkeynes@812
    50
    {
nkeynes@812
    51
      *(.rela.rodata)
nkeynes@812
    52
      *(.rela.rodata.*)
nkeynes@812
    53
      *(.rela.gnu.linkonce.r*)
nkeynes@812
    54
    }
nkeynes@812
    55
  .rel.data      :
nkeynes@812
    56
    {
nkeynes@812
    57
      *(.rel.data)
nkeynes@812
    58
      *(.rel.data.*)
nkeynes@812
    59
      *(.rel.gnu.linkonce.d*)
nkeynes@812
    60
    }
nkeynes@812
    61
  .rela.data     :
nkeynes@812
    62
    {
nkeynes@812
    63
      *(.rela.data)
nkeynes@812
    64
      *(.rela.data.*)
nkeynes@812
    65
      *(.rela.gnu.linkonce.d*)
nkeynes@812
    66
    }
nkeynes@812
    67
  .rel.ctors     : { *(.rel.ctors)	}
nkeynes@812
    68
  .rela.ctors    : { *(.rela.ctors)	}
nkeynes@812
    69
  .rel.dtors     : { *(.rel.dtors)	}
nkeynes@812
    70
  .rela.dtors    : { *(.rela.dtors)	}
nkeynes@812
    71
  .rel.got       : { *(.rel.got)		}
nkeynes@812
    72
  .rela.got      : { *(.rela.got)		}
nkeynes@812
    73
  .rel.sdata     :
nkeynes@812
    74
    {
nkeynes@812
    75
      *(.rel.sdata)
nkeynes@812
    76
      *(.rel.sdata.*)
nkeynes@812
    77
      *(.rel.gnu.linkonce.s*)
nkeynes@812
    78
    }
nkeynes@812
    79
  .rela.sdata     :
nkeynes@812
    80
    {
nkeynes@812
    81
      *(.rela.sdata)
nkeynes@812
    82
      *(.rela.sdata.*)
nkeynes@812
    83
      *(.rela.gnu.linkonce.s*)
nkeynes@812
    84
    }
nkeynes@812
    85
  .rel.sbss      : { *(.rel.sbss)		}
nkeynes@812
    86
  .rela.sbss     : { *(.rela.sbss)	}
nkeynes@812
    87
  .rel.bss       : { *(.rel.bss)		}
nkeynes@812
    88
  .rela.bss      : { *(.rela.bss)		}
nkeynes@812
    89
  .rel.plt       : { *(.rel.plt)		}
nkeynes@812
    90
  .rela.plt      : { *(.rela.plt)		}
nkeynes@812
    91
  .init          : 
nkeynes@812
    92
  { 
nkeynes@812
    93
    KEEP (*(.init))
nkeynes@812
    94
  } =0
nkeynes@812
    95
  .plt      : { *(.plt)	}
nkeynes@812
    96
  .text      :
nkeynes@812
    97
  {
nkeynes@812
    98
    *(.text)
nkeynes@812
    99
    *(.text.*)
nkeynes@812
   100
    *(.stub)
nkeynes@812
   101
    /* .gnu.warning sections are handled specially by elf32.em.  */
nkeynes@812
   102
    *(.gnu.warning)
nkeynes@812
   103
    *(.gnu.linkonce.t*)
nkeynes@812
   104
  } =0
nkeynes@812
   105
  _etext = .;
nkeynes@812
   106
  PROVIDE (etext = .);
nkeynes@812
   107
  .fini      :
nkeynes@812
   108
  {
nkeynes@812
   109
    KEEP (*(.fini))
nkeynes@812
   110
  } =0
nkeynes@812
   111
  .rodata   : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) }
nkeynes@812
   112
  .rodata1   : { *(.rodata1) }
nkeynes@812
   113
  /* Adjust the address for the data segment.  We want to adjust up to
nkeynes@812
   114
     the same address within the page on the next page up.  */
nkeynes@812
   115
  . = ALIGN(128) + (. & (128 - 1));
nkeynes@812
   116
  .data    :
nkeynes@812
   117
  {
nkeynes@812
   118
    *(.data)
nkeynes@812
   119
    *(.data.*)
nkeynes@812
   120
    *(.gnu.linkonce.d*)
nkeynes@812
   121
    SORT(CONSTRUCTORS)
nkeynes@812
   122
  }
nkeynes@812
   123
  .data1   : { *(.data1) }
nkeynes@812
   124
  .eh_frame : { *(.eh_frame) }
nkeynes@812
   125
  .gcc_except_table : { *(.gcc_except_table) }
nkeynes@812
   126
  .ctors   ALIGN(4): 
nkeynes@812
   127
  {
nkeynes@812
   128
    ___ctors = .;
nkeynes@812
   129
    /* gcc uses crtbegin.o to find the start of
nkeynes@812
   130
       the constructors, so we make sure it is
nkeynes@812
   131
       first.  Because this is a wildcard, it
nkeynes@812
   132
       doesn't matter if the user does not
nkeynes@812
   133
       actually link against crtbegin.o; the
nkeynes@812
   134
       linker won't look for a file to match a
nkeynes@812
   135
       wildcard.  The wildcard also means that it
nkeynes@812
   136
       doesn't matter which directory crtbegin.o
nkeynes@812
   137
       is in.  */
nkeynes@812
   138
    KEEP (*crtbegin.o(.ctors))
nkeynes@812
   139
    /* We don't want to include the .ctor section from
nkeynes@812
   140
       from the crtend.o file until after the sorted ctors.
nkeynes@812
   141
       The .ctor section from the crtend file contains the
nkeynes@812
   142
       end of ctors marker and it must be last */
nkeynes@812
   143
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
nkeynes@812
   144
    KEEP (*(SORT(.ctors.*)))
nkeynes@812
   145
    KEEP (*(.ctors))
nkeynes@812
   146
    ___ctors_end = .;
nkeynes@812
   147
  }
nkeynes@812
   148
   .dtors         :
nkeynes@812
   149
  {
nkeynes@812
   150
    ___dtors = .;
nkeynes@812
   151
    KEEP (*crtbegin.o(.dtors))
nkeynes@812
   152
    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
nkeynes@812
   153
    KEEP (*(SORT(.dtors.*)))
nkeynes@812
   154
    KEEP (*(.dtors))
nkeynes@812
   155
    ___dtors_end = .;
nkeynes@812
   156
  }
nkeynes@812
   157
  .got           : { *(.got.plt) *(.got) }
nkeynes@812
   158
  .dynamic       : { *(.dynamic) }
nkeynes@812
   159
  /* We want the small data sections together, so single-instruction offsets
nkeynes@812
   160
     can access them all, and initialized data all before uninitialized, so
nkeynes@812
   161
     we can shorten the on-disk segment size.  */
nkeynes@812
   162
  .sdata     : 
nkeynes@812
   163
  {
nkeynes@812
   164
    *(.sdata) 
nkeynes@812
   165
    *(.sdata.*)
nkeynes@812
   166
    *(.gnu.linkonce.s.*)
nkeynes@812
   167
  }
nkeynes@812
   168
  _edata = .;
nkeynes@812
   169
  PROVIDE (edata = .);
nkeynes@812
   170
  __bss_start = .;
nkeynes@812
   171
  .sbss      :
nkeynes@812
   172
  {
nkeynes@812
   173
    *(.dynsbss)
nkeynes@812
   174
    *(.sbss)
nkeynes@812
   175
    *(.sbss.*)
nkeynes@812
   176
    *(.scommon)
nkeynes@812
   177
  }
nkeynes@812
   178
  .bss       :
nkeynes@812
   179
  {
nkeynes@812
   180
   *(.dynbss)
nkeynes@812
   181
   *(.bss)
nkeynes@812
   182
   *(.bss.*)
nkeynes@812
   183
   *(COMMON)
nkeynes@812
   184
   /* Align here to ensure that the .bss section occupies space up to
nkeynes@812
   185
      _end.  Align after .bss to ensure correct alignment even if the
nkeynes@812
   186
      .bss section disappears because there are no input sections.  */
nkeynes@812
   187
   . = ALIGN(32 / 8);
nkeynes@812
   188
  }
nkeynes@812
   189
  . = ALIGN(32 / 8);
nkeynes@812
   190
  _end = .;
nkeynes@812
   191
  __bss_end = .;
nkeynes@812
   192
  PROVIDE (end = .);
nkeynes@812
   193
  /* Stabs debugging sections.  */
nkeynes@812
   194
  .stab 0 : { *(.stab) }
nkeynes@812
   195
  .stabstr 0 : { *(.stabstr) }
nkeynes@812
   196
  .stab.excl 0 : { *(.stab.excl) }
nkeynes@812
   197
  .stab.exclstr 0 : { *(.stab.exclstr) }
nkeynes@812
   198
  .stab.index 0 : { *(.stab.index) }
nkeynes@812
   199
  .stab.indexstr 0 : { *(.stab.indexstr) }
nkeynes@812
   200
  .comment 0 : { *(.comment) }
nkeynes@812
   201
  /* DWARF debug sections.
nkeynes@812
   202
     Symbols in the DWARF debugging sections are relative to the beginning
nkeynes@812
   203
     of the section so we begin them at 0.  */
nkeynes@812
   204
  /* DWARF 1 */
nkeynes@812
   205
  .debug          0 : { *(.debug) }
nkeynes@812
   206
  .line           0 : { *(.line) }
nkeynes@812
   207
  /* GNU DWARF 1 extensions */
nkeynes@812
   208
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
nkeynes@812
   209
  .debug_sfnames  0 : { *(.debug_sfnames) }
nkeynes@812
   210
  /* DWARF 1.1 and DWARF 2 */
nkeynes@812
   211
  .debug_aranges  0 : { *(.debug_aranges) }
nkeynes@812
   212
  .debug_pubnames 0 : { *(.debug_pubnames) }
nkeynes@812
   213
  /* DWARF 2 */
nkeynes@812
   214
  .debug_info     0 : { *(.debug_info) }
nkeynes@812
   215
  .debug_abbrev   0 : { *(.debug_abbrev) }
nkeynes@812
   216
  .debug_line     0 : { *(.debug_line) }
nkeynes@812
   217
  .debug_frame    0 : { *(.debug_frame) }
nkeynes@812
   218
  .debug_str      0 : { *(.debug_str) }
nkeynes@812
   219
  .debug_loc      0 : { *(.debug_loc) }
nkeynes@812
   220
  .debug_macinfo  0 : { *(.debug_macinfo) }
nkeynes@812
   221
  /* SGI/MIPS DWARF 2 extensions */
nkeynes@812
   222
  .debug_weaknames 0 : { *(.debug_weaknames) }
nkeynes@812
   223
  .debug_funcnames 0 : { *(.debug_funcnames) }
nkeynes@812
   224
  .debug_typenames 0 : { *(.debug_typenames) }
nkeynes@812
   225
  .debug_varnames  0 : { *(.debug_varnames) }
nkeynes@812
   226
/*  .stack 0x8c00f400 : { _stack = .; *(.stack) }*/
nkeynes@812
   227
  /* These must appear regardless of  .  */
nkeynes@812
   228
  _stack = 0x00200000;
nkeynes@812
   229
}
.