1fbe934d6SPalmer Dabbelt/* 2fbe934d6SPalmer Dabbelt * Copyright (C) 2012 Regents of the University of California 3fbe934d6SPalmer Dabbelt * Copyright (C) 2017 SiFive 4fbe934d6SPalmer Dabbelt * 5fbe934d6SPalmer Dabbelt * This program is free software; you can redistribute it and/or 6fbe934d6SPalmer Dabbelt * modify it under the terms of the GNU General Public License 7fbe934d6SPalmer Dabbelt * as published by the Free Software Foundation, version 2. 8fbe934d6SPalmer Dabbelt * 9fbe934d6SPalmer Dabbelt * This program is distributed in the hope that it will be useful, 10fbe934d6SPalmer Dabbelt * but WITHOUT ANY WARRANTY; without even the implied warranty of 11fbe934d6SPalmer Dabbelt * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12fbe934d6SPalmer Dabbelt * GNU General Public License for more details. 13fbe934d6SPalmer Dabbelt */ 14fbe934d6SPalmer Dabbelt 15fbe934d6SPalmer Dabbelt#define LOAD_OFFSET PAGE_OFFSET 16fbe934d6SPalmer Dabbelt#include <asm/vmlinux.lds.h> 17fbe934d6SPalmer Dabbelt#include <asm/page.h> 18fbe934d6SPalmer Dabbelt#include <asm/cache.h> 19fbe934d6SPalmer Dabbelt#include <asm/thread_info.h> 20fbe934d6SPalmer Dabbelt 21fbe934d6SPalmer DabbeltOUTPUT_ARCH(riscv) 22fbe934d6SPalmer DabbeltENTRY(_start) 23fbe934d6SPalmer Dabbelt 24fbe934d6SPalmer Dabbeltjiffies = jiffies_64; 25fbe934d6SPalmer Dabbelt 26fbe934d6SPalmer DabbeltSECTIONS 27fbe934d6SPalmer Dabbelt{ 28fbe934d6SPalmer Dabbelt /* Beginning of code and text segment */ 29fbe934d6SPalmer Dabbelt . = LOAD_OFFSET; 30fbe934d6SPalmer Dabbelt _start = .; 31fbe934d6SPalmer Dabbelt __init_begin = .; 32fbe934d6SPalmer Dabbelt HEAD_TEXT_SECTION 33fbe934d6SPalmer Dabbelt INIT_TEXT_SECTION(PAGE_SIZE) 34fbe934d6SPalmer Dabbelt INIT_DATA_SECTION(16) 35fbe934d6SPalmer Dabbelt /* we have to discard exit text and such at runtime, not link time */ 36fbe934d6SPalmer Dabbelt .exit.text : 37fbe934d6SPalmer Dabbelt { 38fbe934d6SPalmer Dabbelt EXIT_TEXT 39fbe934d6SPalmer Dabbelt } 40fbe934d6SPalmer Dabbelt .exit.data : 41fbe934d6SPalmer Dabbelt { 42fbe934d6SPalmer Dabbelt EXIT_DATA 43fbe934d6SPalmer Dabbelt } 44fbe934d6SPalmer Dabbelt PERCPU_SECTION(L1_CACHE_BYTES) 45fbe934d6SPalmer Dabbelt __init_end = .; 46fbe934d6SPalmer Dabbelt 47fbe934d6SPalmer Dabbelt .text : { 48fbe934d6SPalmer Dabbelt _text = .; 49fbe934d6SPalmer Dabbelt _stext = .; 50fbe934d6SPalmer Dabbelt TEXT_TEXT 51fbe934d6SPalmer Dabbelt SCHED_TEXT 52fbe934d6SPalmer Dabbelt CPUIDLE_TEXT 53fbe934d6SPalmer Dabbelt LOCK_TEXT 54fbe934d6SPalmer Dabbelt KPROBES_TEXT 55fbe934d6SPalmer Dabbelt ENTRY_TEXT 56fbe934d6SPalmer Dabbelt IRQENTRY_TEXT 57fbe934d6SPalmer Dabbelt *(.fixup) 58fbe934d6SPalmer Dabbelt _etext = .; 59fbe934d6SPalmer Dabbelt } 60fbe934d6SPalmer Dabbelt 61fbe934d6SPalmer Dabbelt /* Start of data section */ 62fbe934d6SPalmer Dabbelt _sdata = .; 63fbe934d6SPalmer Dabbelt RO_DATA_SECTION(L1_CACHE_BYTES) 64fbe934d6SPalmer Dabbelt .srodata : { 65fbe934d6SPalmer Dabbelt *(.srodata*) 66fbe934d6SPalmer Dabbelt } 67fbe934d6SPalmer Dabbelt 68fbe934d6SPalmer Dabbelt RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) 69fbe934d6SPalmer Dabbelt .sdata : { 70fbe934d6SPalmer Dabbelt __global_pointer$ = . + 0x800; 71fbe934d6SPalmer Dabbelt *(.sdata*) 72fbe934d6SPalmer Dabbelt /* End of data section */ 73fbe934d6SPalmer Dabbelt _edata = .; 74fbe934d6SPalmer Dabbelt *(.sbss*) 75fbe934d6SPalmer Dabbelt } 76fbe934d6SPalmer Dabbelt 77*41fb9d54SPalmer Dabbelt BSS_SECTION(PAGE_SIZE, PAGE_SIZE, 0) 78*41fb9d54SPalmer Dabbelt 79fbe934d6SPalmer Dabbelt EXCEPTION_TABLE(0x10) 80fbe934d6SPalmer Dabbelt NOTES 81fbe934d6SPalmer Dabbelt 82fbe934d6SPalmer Dabbelt .rel.dyn : { 83fbe934d6SPalmer Dabbelt *(.rel.dyn*) 84fbe934d6SPalmer Dabbelt } 85fbe934d6SPalmer Dabbelt 86fbe934d6SPalmer Dabbelt _end = .; 87fbe934d6SPalmer Dabbelt 88fbe934d6SPalmer Dabbelt STABS_DEBUG 89fbe934d6SPalmer Dabbelt DWARF_DEBUG 90fbe934d6SPalmer Dabbelt 91fbe934d6SPalmer Dabbelt DISCARDS 92fbe934d6SPalmer Dabbelt} 93