diff options
-rw-r--r-- | arch/mips/Makefile | 18 | ||||
-rw-r--r-- | arch/mips/galileo-boards/ev64120/ld.script.galileo | 113 | ||||
-rw-r--r-- | arch/mips/ld.script.in | 2 |
3 files changed, 7 insertions, 126 deletions
diff --git a/arch/mips/Makefile b/arch/mips/Makefile index 3ea928267..bf6c7fd36 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile @@ -102,7 +102,7 @@ AFLAGS += $(GCCFLAGS) ifdef CONFIG_ALGOR_P4032 CORE_FILES += arch/mips/algor/algor.o SUBDIRS += arch/mips/algor -#LOADADDR += 0x80000000 +LOADADDR += 0x80000000 endif # @@ -196,7 +196,7 @@ endif ifdef CONFIG_MIPS_EV64120 LIBS += arch/mips/galileo-boards/ev64120/ev64120.o SUBDIRS += arch/mips/galileo-boards/ev64120 -LINKSCRIPT = arch/mips/galileo-boards/ev64120/ld.script.galileo +LOADADDR += 0x80100000 endif # @@ -223,18 +223,12 @@ endif # error messages during linking. Select a default linkscript if # none has been choosen above. # -ifndef LINKSCRIPT vmlinux: arch/$(ARCH)/ld.script -arch/$(ARCH)/ld.script: arch/$(ARCH)/ld.script.in - sed 's/@@OUTPUT_FORMAT@@/$(output-format)/' <$< >$@ -LINKSCRIPT = arch/mips/ld.script -endif -LINKFLAGS += -T $(word 1,$(LINKSCRIPT)) - -ifdef LOADADDR -LINKFLAGS += -Ttext $(word 1,$(LOADADDR)) -endif +arch/$(ARCH)/ld.script: arch/$(ARCH)/ld.script.in arch/$(ARCH)/Makefile + sed -e 's/@@OUTPUT_FORMAT@@/$(output-format)/' \ + -e 's/@@LOADADDR@@/$(LOADADDR)/' <$< >$@ +LINKFLAGS += -T arch/$(ARCH)/ld.script HEAD := arch/mips/kernel/head.o arch/mips/kernel/init_task.o diff --git a/arch/mips/galileo-boards/ev64120/ld.script.galileo b/arch/mips/galileo-boards/ev64120/ld.script.galileo deleted file mode 100644 index 1c9faa3f3..000000000 --- a/arch/mips/galileo-boards/ev64120/ld.script.galileo +++ /dev/null @@ -1,113 +0,0 @@ -OUTPUT_FORMAT("elf32-bigmips") -OUTPUT_ARCH(mips) -ENTRY(kernel_entry) -SECTIONS -{ - /* Read-only sections, merged into text segment: */ - . = 0x80100000; - /* app_header is needed for the Orion bootloader -- Cort */ - .app_header : { *(.app_header) } - .init : { *(.init) } =0 - .text : - { - _ftext = . ; - *(.text) - *(.rodata) - *(.rodata1) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } =0 - _etext = .; - PROVIDE (etext = .); - - . = ALIGN(8192); - .data.init_task : { *(.data.init_task) } - - /* Startup code */ - . = ALIGN(4096); - __init_begin = .; - .text.init : { *(.text.init) } - .data.init : { *(.data.init) } - . = ALIGN(16); - __setup_start = .; - .setup.init : { *(.setup.init) } - __setup_end = .; - __initcall_start = .; - .initcall.init : { *(.initcall.init) } - __initcall_end = .; - . = ALIGN(4096); /* Align double page for init_task_union */ - __init_end = .; - - . = ALIGN(4096); - .data.page_aligned : { *(.data.idt) } - - . = ALIGN(32); - .data.cacheline_aligned : { *(.data.cacheline_aligned) } - - .fini : { *(.fini) } =0 - .reginfo : { *(.reginfo) } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. It would - be more correct to do this: - . = .; - The current expression does not correctly handle the case of a - text segment ending precisely at the end of a page; it causes the - data segment to skip a page. The above expression does not have - this problem, but it will currently (2/95) cause BFD to allocate - a single segment, combining both text and data, for this case. - This will prevent the text segment from being shared among - multiple executions of the program; I think that is more - important than losing a page of the virtual address space (note - that no actual memory is lost; the page which is skipped can not - be referenced). */ - . = .; - .data : - { - _fdata = . ; - *(.data) - CONSTRUCTORS - } - .data1 : { *(.data1) } - _gp = . + 0x8000; - .lit8 : { *(.lit8) } - .lit4 : { *(.lit4) } - .ctors : { *(.ctors) } - .dtors : { *(.dtors) } - .got : { *(.got.plt) *(.got) } - .dynamic : { *(.dynamic) } - /* We want the small data sections together, so single-instruction offsets - can access them all, and initialized data all before uninitialized, so - we can shorten the on-disk segment size. */ - .sdata : { *(.sdata) } - _edata = .; - PROVIDE (edata = .); - - __bss_start = .; - _fbss = .; - .sbss : { *(.sbss) *(.scommon) } - .bss : - { - *(.dynbss) - *(.bss) - *(COMMON) - _end = . ; - PROVIDE (end = .); - } - /* These are needed for ELF backends which have not yet been - converted to the new style linker. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - /* DWARF debug sections. - Symbols in the .debug DWARF section are relative to the beginning of the - section so we begin .debug at 0. It's not clear yet what needs to happen - for the others. */ - .debug 0 : { *(.debug) } - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_sfnames 0 : { *(.debug_sfnames) } - .line 0 : { *(.line) } - /* These must appear regardless of . */ - .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } - .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } -} diff --git a/arch/mips/ld.script.in b/arch/mips/ld.script.in index 41e6158aa..dcf8b7346 100644 --- a/arch/mips/ld.script.in +++ b/arch/mips/ld.script.in @@ -4,7 +4,7 @@ ENTRY(kernel_entry) SECTIONS { /* Read-only sections, merged into text segment: */ - . = 0x80000000; + . = @@LOADADDR@@; .init : { *(.init) } =0 .text : { |